Button Sperren

Hallo zusammen
ich habe eine GUI mit Buttons wenn der Butoon geklickt wird startet ein Neuer Thread in dieser zeit sollte der Button nicht weiter geklickt werden können
ich habe diesen auf setEnabled(false) gesetzt aber er ist dann nur grau hinterlegt funktioniert aber weiterhin wenn ich darauf klicke.

private void jButton1MouseReleased(java.awt.event.MouseEvent evt) {                                       
        
           
      new Thread(new Runnable() {
                    public void run() {

                        try {
                            jButton1.setEnabled(false);
                            jTextField1.setEnabled(false);
                            jTextField2.setEnabled(false);
                            DateiODB dateiODB = new DateiODB();
                        } catch (InterruptedException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (IOException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (SQLException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (ParseException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (ClassNotFoundException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        
                    }
                }).start();
              
    }       

könnt ihr mir da weiterhelfen ???

vielen dank für die Hilfe

Zieh einfach das Disablen raus, also bevor Du den Thread startest. Dann darfst Du aus einem Thread keine GUI Elemente manipulieren. Leider riegelt Swing das nicht so radikal ab wie C#. Kann mal jemand ein paar Stichworte für Google fallen lassen - mir fällt da grade nichts ein :twisted:

Nutze lieber den ActionListener anstatt dem MouseListener. Wenn der Button deaktiviert ist, kannst du ja immernoch auf die Komponenten klicken, was ein MouseEvent auslöst. Das ActionEvent kann nur ausgelöst werden, wenn der Button auch wirklich gedrückt wird, was bei einem deaktivierten Button nicht gehen sollte

Edit:

Noch ein Grund um auf JavaFX zu bauen. Da fliegt dir in dem Fall eine Exception um die Ohren :smiley:

Danke schön für die rasche antwort
aber leider funktioniert das auch nicht der Button ist grau aber der event löst trotzdem aus :frowning:

  private void jButton1MouseReleased(java.awt.event.MouseEvent evt) {                                       
        
        jButton1.setEnabled(false);
        jTextField1.setEnabled(false);
        jTextField2.setEnabled(false);
           
      new Thread(new Runnable() {
                    public void run() {

                        try {
                            //jButton1.setEnabled(false);
                            //jTextField1.setEnabled(false);
                            //jTextField2.setEnabled(false);
                            DateiODB dateiODB = new DateiODB();
                        } catch (InterruptedException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (IOException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (SQLException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (ParseException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (ClassNotFoundException ex) {
                            Logger.getLogger(DB_Clear_gui.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        
                    }
                }).start();
              
    }                 

*** Edit ***

so hab es mit dem ActionListener umgebaut jetzt funktioniert es bestens
vielen dank für die hilfe

:smiley:

Moin,

Mal so nebenbei: sind bei Die die Tasten zur Zeichensetzung kaputt ?? :grr:
Man muss das ja x-fach lesen, ehe man es versteht :twisted:

Gruß Klaus