Frage

Ich habe eine Schaukel-Anwendung erstellt und es gibt eine Schaltfläche „Start“ auf der GUI. Ich möchte, dass, wenn ich klickte auf die Schaltfläche „Start“, sollte die Start-Taste deaktiviert und die Taste „Stop“ aktiviert werden.

Für das ich geschrieben habe den folgenden Code in der "ActionPeformed (...)" Methode der Schaltfläche "Start"

startButton.setEnabled(false);
stopButton.setEnabled(true);

Aber der obige Code schafft nicht die auf der GUI beeinflussen gewünscht wird.

Ist der obige Code richtig für das, was ich tun will?

Es ist nicht mit "repaint ()" zu arbeiten.

Edit:

Der Code ist sehr lang, so dass ich nicht den ganzen Code einfügen können. Ich kann sagen, obwohl, mehr über den Code.

In der „ActionPeformed“ Methode der „Start“ -Taste, nachdem die beiden oben genannten Aussagen nennen, ich ein „Swingworker“ thread bin ausführen.

Ist dieses Thema zu schaffen irgendein Problem?

War es hilfreich?

Lösung

  

Für das ich geschrieben habe den folgenden Code in der "ActionPeformed (...)" Methode der Schaltfläche "Start"

Sie müssen diesen Code in der actionPerformed(...) des ActionListener mit der Start-Taste registriert werden, nicht für die Start-Schaltfläche selbst.

Sie können einen einfachen ActionListener wie folgt hinzu:

JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae) {
        startButton.setEnabled(false);
        stopButton.setEnabled(true);
     }
   }
 );

beachten Sie, dass Ihre Startbutton oben benötigen im obigen Beispiel werden final, wenn Sie den anonymen Zuhörer in lokalen Bereich erstellen möchten.

Andere Tipps

  

Der Code ist sehr lang, so kann ich nicht einfügen   der gesamte Code.

Es könnte eine beliebige Anzahl von Gründen, warum Ihr Code funktioniert nicht. Vielleicht erklärt Sie die Schaltfläche Variablen zweimal, so dass Sie nicht wirklich ändern Aktivieren / Deaktivieren der Schaltfläche wie Sie denken, Sie sind. Vielleicht blockieren Sie das EDT.

Sie benötigen einen SSCCE erstellen, die auf dem Forum posten.

So ist es an Ihnen, das Problem zu isolieren. Beginnen Sie mit einem einfachen Rahmen thas zwei Tasten und sehen, ob Ihr Code funktioniert. Sobald Sie diese zum Laufen zu bringen, dann versuchen Sie einen Thread starten, die einfach 10 Sekunden lang schläft, um zu sehen, ob es funktioniert noch.

Erfahren Sie, wie die basice Arbeit zuerst, bevor Sie ein 200 Zeilenprogramm zu schreiben.

Erfahren Sie, wie einige grundlegende Debugging zu tun, sind wir keine Gedanken lesen. Wir können nicht erraten, was dumme Fehler, den Sie auf der Grundlage Ihrer verbale Beschreibung des Problems tun.

Das funktioniert.

public class TestButton {

public TestButton() {
    JFrame f = new JFrame();
    f.setSize(new Dimension(200,200));
    JPanel p = new JPanel();
    p.setLayout(new FlowLayout());

    final JButton stop = new JButton("Stop");
    final JButton start = new JButton("Start");
    p.add(start);
    p.add(stop);
    f.getContentPane().add(p);
    stop.setEnabled(false);
    stop.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(true);
            stop.setEnabled(false);

        }
    });

    start.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(false);
            stop.setEnabled(true);

        }
    });
    f.setVisible(true);
}

/**
 * @param args
 */
public static void main(String[] args) {
    new TestButton();

}

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top