1. #1

    Registriert seit
    12.02.2012
    Beiträge
    78
    Thanked 11 Times in 5 Posts

    Standard JButton erst nach Sekunden wieder true setzten

    Hallo/Nabend,

    ich versuche grade einen JButton zu programmieren der durch einen Klick ausgegraut wird,
    und sich von selbst wieder nach zum Beispiel 5 Sekunden aktiviert
    (Die erste If-Abfrage ist absichtlich, weil ich später noch mehr JButtons hinzufügen will).


    PHP-Code:

    private class AuswahlListener implements ActionListener {

    @
    Override
    public void actionPerformed(ActionEvent ae) {

    if  (
    ae.getSource() == button) {
    label.setText(button.getText());
    button.setEnabled(false);
     }


    if (!
    button.isEnabled()) {
    //Dieser Teil fehlt
    button.setEnabled(true);
              }
         }

    Das ausgrauen klappt problemlos,
    aber sobald ich einen Timer hinzufüge, schmiert das Programm ab.

    Bitte um Hilfe.

  2. #2
    Avatar von Bubble
    Registriert seit
    20.11.2011
    Beiträge
    703
    Thanked 510 Times in 327 Posts

    Standard AW: JButton erst nach Sekunden wieder true setzten

    Hey,

    starte einen Thread, der nach 5 Sekunden "schlafen" (sleep 5000) den Button ändert. Wahrscheinlich nicht der beste Stil, aber was soll es.


    #
    Geändert von Bubble (22.11.2013 um 22:39 Uhr)

  3. #3
    Avatar von Waterpolo
    Registriert seit
    26.01.2012
    Beiträge
    2.339
    Thanked 2.698 Times in 1.050 Posts

    Standard AW: JButton erst nach Sekunden wieder true setzten

    Tipp:

    Zitat Zitat von Ein Freund
    Du könntest hier einen Timer verwenden. Den aus dem javax.swing-Package (nicht aus java.util). Vorteil ist, dass der Code auf dem Event-Dispatch-Thread ausgeführt wird, und es daher keine Probleme darstellen sollte, auf GUI-Komponenten zuzugreifen.

    Habe dir mal ein kleines kompilierbares Beispiel geschrieben:

    Code:
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
         
        import javax.swing.JButton;
        import javax.swing.JFrame;
        import javax.swing.SwingUtilities;
        import javax.swing.Timer;
         
         
        public final class EnableTimerDemo {
               
                public static void main(String[] args) {
                        SwingUtilities.invokeLater(new Runnable() {
                                @Override
                                public void run() {
                                        final EnableTimerDemo demo = new EnableTimerDemo();
                                        demo.createAndShowGUI();
                                }
                        });
                }
               
                // ----------------------------------------------
               
                private final JButton button;
                private final Timer timer;
               
                public EnableTimerDemo() {
                        button = new JButton("Click me");
                        timer = new Timer(5000, new ActionListener() {
                                @Override
                                public void actionPerformed(ActionEvent ae) {
                                        button.setEnabled(true);
                                }
                        });
                }
               
                public void createAndShowGUI() {
                        final JFrame frame = new JFrame("JButtonEnableTimerDemo");
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        button.addActionListener(new ActionListener() {
                                @Override
                                public void actionPerformed(ActionEvent ae) {
                                        // do some logic here
                                        button.setEnabled(false);
                                        timer.start();
                                }
                        });
                        frame.add(button);
                        frame.pack();
                        frame.setVisible(true);
                }
        }

    Zitat Zitat von GerMaN-DeLuXe
    Vorurteile ohne Ende und macht Einzelfälle zur pauschalen Allgemeingültigkeit

  4. The Following User Says Thank You to Waterpolo For This Useful Post:

    Pyromane (23.11.2013)

Ähnliche Themen

  1. [Kurzgeschichte] 2100 Sekunden
    Von Mr.Bombastic im Forum RealLife
    Antworten: 3
    Letzter Beitrag: 27.01.2014, 20:00
  2. Nach den Ferien wieder früh ins Bett gehen?
    Von ThunderStorm im Forum RealLife
    Antworten: 11
    Letzter Beitrag: 31.07.2013, 20:01
  3. Wieder Kontakt mit einer Freudin, aber sofort wieder versaut..
    Von IceNet im Forum Zwischenmenschliches
    Antworten: 11
    Letzter Beitrag: 29.07.2013, 00:46
  4. HBO verlängert True Blood für eine siebte Staffel
    Von Patrick Bateman im Forum Filme, Serien und TV
    Antworten: 0
    Letzter Beitrag: 15.07.2013, 23:39
  5. Antworten: 3
    Letzter Beitrag: 25.10.2012, 13:51
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.