3 Stimmen

Aktionen, die auf jButton ausgeführt werden, nachdem er deaktiviert wurde.

Ich habe Beispielscode mit Swing.

package playerlist;

import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.event.*;

public class Sample extends JFrame{
    private JButton button1;
    private JButton button2;

    public Sample(){
        super();
        setTitle("Beispiel JFrame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        button1 = new JButton("Button 1");
        button2 = new JButton("Button 2");

        button1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                button1ActionPerformed(e);
            }
        });
        button2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                button2ActionPerformed(e);
            }
        });

        setLayout(new FlowLayout());

        add(button1);
        add(button2);
        pack();
    }

    private void button1ActionPerformed(ActionEvent ae){
        button1.setEnabled(false);
        button2.setEnabled(false);
        try{
              Thread.sleep(5000);
        }catch(Exception e){

        }
        System.out.println("*** Button 1 Clicked ***");
        button1.setEnabled(true);
        button2.setEnabled(true);
    }

    private void button2ActionPerformed(ActionEvent ae){
        button1.setEnabled(false);
        button2.setEnabled(false);
        try{
            Thread.sleep(5000);
        }catch(Exception e){

        }
        // Ich habe diesen Button aus der Aktion des Buttons 1 deaktiviert, aber trotzdem werden die Aktionen dieses Buttons ausgeführt,
        // wenn ich innerhalb von 5 Sekunden auf diesen Button klicke
        System.out.println("*** Button 2 Clicked ***");
        button1.setEnabled(true);
        button2.setEnabled(true);
    }

    public static void main(String [] args){
        new Sample().setVisible(true);
    }
}

Ich möchte es so haben - wenn ich auf Button1 klicke (wenn die Aktion von Button1 beginnt), sollten Button1 und Button2 deaktiviert sein (wenn ich auf einen deaktivierten Button klicke, sollten keine Aktionen ausgeführt werden). Ich habe beide Buttons mit setEnabled(false) deaktiviert. Und wenn die Aktion von Button1 abgeschlossen ist, sollten beide Buttons aktiviert werden. Aber in meinem Code funktioniert das nicht, auch nach Deaktivierung des Buttons werden Aktionen auf dem deaktivierten Button ausgeführt. In der Aktion von Button1 habe ich beide Buttons deaktiviert und die sleep-Methode verwendet, um die Ausführung (zur Simulation schwerer Arbeit) für 5 Sekunden zu pausieren, aber innerhalb von 5 Sekunden, wenn ich auf irgendwelche Buttons klicke, werden ihre Aktionen nach Abschluss der Aktion von Button1 ausgelöst. Bitte helfen Sie mir. Ich habe Beispielcode bereitgestellt, wenn Sie ihn ausführen und nach dem Klicken auf Button1 sofort auf Button2 klicken, werden die Aktionen beider Buttons ausgeführt. Ich möchte, dass bei Betätigung von irgendwelchen Buttons schwere Arbeit in der Klickaktion des Buttons durchgeführt wird und ich währenddessen alle Buttons deaktiviere, damit keine weiteren Aktionen ausgeführt werden können. Wenn die erste Aktion abgeschlossen ist, werde ich alle Buttons aktivieren. Bitte helfen Sie mir. Vielen Dank im Voraus.

3voto

mKorbel Punkte 109073

1voto

nullptr Punkte 3270

Ich habe dies zum Laufen gebracht, indem ich die Aufgabe auf einem neuen Thread ausgeführt habe, der beim Klicken auf die Schaltfläche ausgeführt werden soll.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X