Swing Programm hängt sich auf!

trazz

Mitglied
Hallöchen zusammen,

ich habe folgendes Problem: Wenn ich auf meinen Button (Berechnen) klicke, hängt sich das Programm auf und lässt sich nur durch den Taskmanager schließen. Hier mein betreffender Quellcode:
Java:
berechnen1.addActionListener(new ActionListener() {

                            @Override
                            public void actionPerformed(ActionEvent a) {
                                // TODO Auto-generated method stub
                                 try {
                                     int n1;
                                     Scanner scan = new Scanner(System.in);
                                     n1 = scan.nextInt();
                                   
                                     if(A2.getText() == kl5) {                                 
                                    if(n1 >= 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                                    }
                                    if(n1 >= 28 && n1 < 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                                    }
                                    if(n1 >= 21 && n1 < 28) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                                    }
                                }                              
                                 } catch (NumberFormatException nfe){
                                     return;
                                 }
                            }                           
                         });


Danke im Voraus!
Grüße Trazz!
 
Zuletzt bearbeitet von einem Moderator:
Ich gehe mal davon aus, dass deine Anwendung rein Fensterbasiert ist, und du nicht gleichzeitig noch über eine Konsole was eingibst?

Der Scanner versucht von System.in etwas einzulesen, und blockiert solange, bis etwas eingegeben wurde. Wenn du nichts eingibst, also ewig.
 
Füg deinem Fenster ein Eingabefeld hinzu, in welches man dann die Zahl eingibt und welches innerhalb der actionPerformed() ausgelesen wird
 
@mrBrown Hä ? Ich habe ja schon ein Eingabefeld, ich zeige dir mal einen Ausschnitt aus dem Quellcode, denn ich verstehe nicht genau was du meinst:
Java:
@Override
            public void actionPerformed(ActionEvent ae) {
               
                 if(box1.isSelected()) {
                     panel2.setLayout(null);
                     f.setVisible(false);
                        JFrame f2 = new JFrame();
                         f2.setVisible(true);
                         f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                         f2.setLocationRelativeTo(null);
                         f2.setTitle("Schrägliegehang");
                         f2.setBounds(100, 300, 500, 500);
                        
                         anzahl1 = new JLabel("Anzahl: ");
                         anzahl1.setFont(font);
                        
                         anzahl1.setBounds(140, 123, 75, 15);
                         anzahl1.setVisible(true);
                        
                        JTextField A1 = new JTextField(5);
                        A1.setBounds(210, 120, 32, 25);
                        A1.setDocument(createNumericDocumentWithMaxLength(3));
                       
                       
                        JTextField A2 = new JTextField();
                        A2.setDocument(createNumericDocumentWithMaxLength1(2));
                        A2.setBounds(210, 180, 32, 25);
                       
                        klasse1 = new JLabel("Klasse: ");
                        klasse1.setFont(font);
                       
                        klasse1.setBounds(140, 183, 75, 15);
                        klasse1.setVisible(true);
                        
                         JLabel t2 = new JLabel("Anzahl:");
                         //Ergänzen//
                        
                         JLabel t3 = new JLabel("Klasse:");
                         //Ergänzen//
                       
                        
                         berechnen1.setBounds(160, 280, 115, 35);
                         berechnen1.addActionListener(new ActionListener() {
                            
                                                                                      

                            @Override
                            public void actionPerformed(ActionEvent a) {
                                // TODO Auto-generated method stub
                                 try {
                                     int n1;
                                     Scanner scan = new Scanner(System.in);
                                     n1 = scan.nextInt();
                                    
                                     if(A2.getText() == kl5) {                                  
                                    if(n1 >= 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                                    }
                                    if(n1 >= 28 && n1 < 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                                    }
                                    if(n1 >= 21 && n1 < 28) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                                    }
                                }
                               
                               
                                 } catch (NumberFormatException nfe){
                                     return;
                                    
                                 }
                               
                               
                               
                            }
                            
                         });
 
Aktuell versuchst du 'n1' aus System.in einzulesen, du solltest das so ändern, dass 'n1' aus einem deiner Eingabefelder kommt. Also zusätzlich zu A1 und A2 (vllt soll es auch eines der beiden sein) ein Eingabefeld, in welchem man 'n1' eingibt, und welches dann ausgelesen und geparsed wird.


Ganz abgesehen davon täte sinnvollere Benennung der Variablen und etwas mehr Strukturierung deinem Code gut 😉
 
@mrBrown Ok, ich habe es jetzt so versucht:
Java:
@Override
                            public void actionPerformed(ActionEvent a) {
                                // TODO Auto-generated method stub
                                 try {
                                     int n1;
                                     Scanner scan = new Scanner(A2.getText());
                                     n1 = scan.nextInt();
                                    
                                     if(A2.getText() == kl5) {                                  
                                    if(n1 >= 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                                    }
                                    if(n1 >= 28 && n1 < 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                                    }
                                    if(n1 >= 21 && n1 < 28) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                                    }
                                }
                               
                               
                                 } catch (NumberFormatException nfe){
                                     return;
                                    
                                 }
                               
                               
                               
                            }
                            
                         });

Das Programm hängt sich schon mal nicht mehr auf, aber bei der Button Betätigung passiert auch nichts.
Gruß 😉
 
Was soll denn 'A2' enthalten?

Entweder einer Zahl zwischen 21 und 35, dann wird aber fast immer (A2.getText()== kl5) fehlschlagen, oder eben kl5, dann werden die Bedingungen danach wahrscheinlich nie true sein.

(A2.getText()== kl5) wird vermutlich sowieso immer fehlschlagen, da == nur true ist, wenn es genau die selben Objekte sind, nicht wenn der Inhalt der Strings gleich ist. Für Springvergleiche immer equals() nutzen, das vergleicht den Inhalt.
 
@mrBrown A2 ist das Textfeld zur Eingabe, und das mit kl5 ist noch nicht ganz fertig, das ist erst die erste Abfrage. Ich schicke dir mal den ganzen Quellcode:
Java:
public  HauptKlasse() {
        panel.setLayout(null);
      
        JFrame f = new JFrame();
        f.setIconImage(img.getImage());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLocationRelativeTo(null);
        f.setTitle("Notenberechnung - Sport");
        f.setBounds(100, 300, 500, 500);
  
        text1 = new JLabel("Bitte wählen Sie die Disziplin aus!");
        text1.setVisible(true);
        text1.setBounds(135, 30, 300, 50);
        text1.setFont(new Font("Calabria", Font.BOLD, 16));
         
        button.setBounds(195, 350, 100, 35);

        box1.setVisible(true);
        box1.setBounds(195, 110, 150, 35);
      
        box2.setVisible(true);
        box2.setBounds(195, 190, 150, 35);
      
        box3.setVisible(true);
        box3.setBounds(195, 270, 150, 35);
      
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
              
                 if(box1.isSelected()) {
                     panel2.setLayout(null);
                     f.setVisible(false);
                        JFrame f2 = new JFrame();
                         f2.setVisible(true);
                         f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                         f2.setLocationRelativeTo(null);
                         f2.setTitle("Schrägliegehang");
                         f2.setBounds(100, 300, 500, 500);
                       
                         anzahl1 = new JLabel("Anzahl: ");
                         anzahl1.setFont(font);
                       
                         anzahl1.setBounds(140, 123, 75, 15);
                         anzahl1.setVisible(true);
                       
                        JTextField A1 = new JTextField(5);
                        A1.setBounds(210, 120, 32, 25);
                        A1.setDocument(createNumericDocumentWithMaxLength(3));
                      
                      
                        JTextField A2 = new JTextField();
                        A2.setDocument(createNumericDocumentWithMaxLength1(2));
                        A2.setBounds(210, 180, 32, 25);
                      
                        klasse1 = new JLabel("Klasse: ");
                        klasse1.setFont(font);
                      
                        klasse1.setBounds(140, 183, 75, 15);
                        klasse1.setVisible(true);
                       
                         JLabel t2 = new JLabel("Anzahl:");
                         //Ergänzen//
                       
                         JLabel t3 = new JLabel("Klasse:");
                         //Ergänzen//
                      
                       
                         berechnen1.setBounds(160, 280, 115, 35);
                         berechnen1.addActionListener(new ActionListener() {
                           
                                                                                     

                            @Override
                            public void actionPerformed(ActionEvent a) {
                                // TODO Auto-generated method stub
                                 try {
                                     int n1;
                                     Scanner scan = new Scanner(A2.getText());
                                     n1 = scan.nextInt();
                                   
                                     if(A2.getText() == kl5) {                                 
                                    if(n1 >= 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                                    }
                                    if(n1 >= 28 && n1 < 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                                    }
                                    if(n1 >= 21 && n1 < 28) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                                    }
                                }
                              
                              
                                 } catch (NumberFormatException nfe){
                                     return;
                                   
                                 }    
                            }                           
                         });
                       
                       
                     panel2.add(A1);
                     panel2.add(A2);
                     panel2.add(anzahl1);
                     panel2.add(klasse1);
                     panel2.add(berechnen1);
                     f2.add(panel2);                
                       
                 }else {
                     if(box2.isSelected()) {
                            f.setVisible(false);
                            JFrame f3 = new JFrame();
                             f3.setVisible(true);
                             f3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                             f3.setLocationRelativeTo(null);
                             f3.setTitle("Liegestütz");
                             f3.setBounds(100, 300, 500, 500);
                           
                             JLabel t2 = new JLabel("Anzahl:");
                             //Ergänzen//
                           
                             JLabel t3 = new JLabel("Klasse:");
                             //Ergänzen//
                     }else {
                         if(box3.isSelected()) {
                                f.setVisible(false);
                                JFrame f4 = new JFrame();
                                 f4.setVisible(true);
                                 f4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                 f4.setLocationRelativeTo(null);
                                 f4.setTitle("Seilspringen");
                                 f4.setBounds(100, 300, 500, 500);
                               
                                 JLabel t2 = new JLabel("Anzahl:");
                                 t2.setBounds(12, 50, 100, 300);
                                 t2.setVisible(true);
                                 JLabel t3 = new JLabel("Klasse:");
                                 //Ergänzen//
                       
                         panel.add(t2);
                      
                         }
                     }
                 }
            }
        });
      
        box1.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub
              
                if(box1.isSelected() == true) {
                    box2.setSelected(false);
                    box3.setSelected(false);              
                }
            }
        });
        box2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub              
                 if(box2.isSelected() == true) {
                    box1.setSelected(false);
                    box3.setSelected(false);              
                }
            }
        });
        box3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub              
                 if(box3.isSelected() == true) {
                    box1.setSelected(false);
                    box2.setSelected(false);
                }   
            }
        });
      
        panel.add(button);
        panel.add(box1);
        panel.add(box2);
        panel.add(box3);
        panel.add(text1);
        f.add(panel);      
        }
    }
 
Zuletzt bearbeitet von einem Moderator:
1. Wenn du schreibst "ganzer Quellcode" dan poste ihn auch. Dein Code ist nicht kompilierbar, da die umgebende Klasse fehlt. Die createNumericDocument... Methoden fehlen ebenfalls.
2. Layoutmanager verwenden.
3. Statt der JCheckBoxen box1, box2 und box3 JRadioButtons mit einer ButtonGroup verwenden.
4. mrBrowns Tips beherzigen. Strings vergleicht man nicht mit "==", sondern mit equals. In deinem letzten Post hast du immer noch den falschen vergleich drin.
5. Sinnvolles Exceptionhandling. Wenn ich die API Doc vom Scanner richtig verstehe, wirft die nextInt-Methode keine NumberFormatException, sondern eine InputMismatchException, wenn der Inhalt des Strings nicht in einen int geparst werden kann. Und selbst wenn eine NumberFormatException fliegt, bekämst du davon gar nix mit, weil du im catch-Block nur returnst. Zumindest den stack trace der Exception solltest du im catch-Block ausgeben.
 
@Harry Kane
Java:
public class HauptKlasse extends JFrame  {
    Font font = new Font("Verdana", Font.BOLD, 15);
  
    static String kl5 = "5";
    static String kl6 = "6";
    static String kl7 = "7";
    static String kl8 = "8";
    static String kl9 = "9";
    static String kl10 = "10";
    static String kl11 = "11";
    static String kl12 = "12";
   
    static JLabel text1;
    static JLabel anzahl1;
    static JLabel klasse1;
  
    JPanel panel2 = new JPanel();
  
    ImageIcon img = new ImageIcon("[I](Aus privat. Gründen entfernt)[/I]");

    JPanel panel = new JPanel();
    JButton button = new JButton("Bestätigen");
    JCheckBox box1 = new JCheckBox("Schrägliegehang");
    JCheckBox box2 = new JCheckBox("Liegestütz");
    JCheckBox box3 = new JCheckBox("Seilspringen");
    JButton berechnen1 = new JButton("Berechnen");
    JButton berechnen2 = new JButton("Berechnen");
    JButton berechnen3 = new JButton("Berechnen");
       
    public static void main(String[] args) {      
        HauptKlasse hk = new HauptKlasse();
        MySQLConnection conn = new MySQLConnection();   
        JOptionPane.showMessageDialog(null, "Aus privat. Gründen entfernt");
    }

private Document createNumericDocumentWithMaxLength(final int maxLength) {
            Document doc = new PlainDocument(){
                @Override
                public void insertString(int offs, String str, AttributeSet a)
                    throws BadLocationException {
                    if(getLength() + str.length() > maxLength)
                        return;
                    if(!str.matches("^[\\d]*$"))
                        return;                  
                  
                    super.insertString(offs, str, a);                      
                }
            };
            return doc;          
        }

private Document createNumericDocumentWithMaxLength1(final int maxLength) {
    Document doc = new PlainDocument(){
        @Override
        public void insertString(int offs, String str, AttributeSet a)
            throws BadLocationException {
            if(getLength() + str.length() > maxLength)
                return;
            if(!str.matches("^[\\d]*$"))
            if(!str.matches("[5-12]+"))  
                return;          
          
            super.insertString(offs, str, a);              
        }
    };
    return doc;  
}

    public  HauptKlasse() {
        panel.setLayout(null);
      
        JFrame f = new JFrame();
        f.setIconImage(img.getImage());
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLocationRelativeTo(null);
        f.setTitle("Notenberechnung - Sport");
        f.setBounds(100, 300, 500, 500);
  
        text1 = new JLabel("Bitte wählen Sie die Disziplin aus!");
        text1.setVisible(true);
        text1.setBounds(135, 30, 300, 50);
        text1.setFont(new Font("Calabria", Font.BOLD, 16));
       
        button.setBounds(195, 350, 100, 35);

        box1.setVisible(true);
        box1.setBounds(195, 110, 150, 35);
      
        box2.setVisible(true);
        box2.setBounds(195, 190, 150, 35);
      
        box3.setVisible(true);
        box3.setBounds(195, 270, 150, 35);
      
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
              
                 if(box1.isSelected()) {
                     panel2.setLayout(null);
                     f.setVisible(false);
                        JFrame f2 = new JFrame();
                         f2.setVisible(true);
                         f2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                         f2.setLocationRelativeTo(null);
                         f2.setTitle("Schrägliegehang");
                         f2.setBounds(100, 300, 500, 500);
                       
                         anzahl1 = new JLabel("Anzahl: ");
                         anzahl1.setFont(font);
                       
                         anzahl1.setBounds(140, 123, 75, 15);
                         anzahl1.setVisible(true);
                       
                        JTextField A1 = new JTextField(5);
                        A1.setBounds(210, 120, 32, 25);
                        A1.setDocument(createNumericDocumentWithMaxLength(3));
                      
                      
                        JTextField A2 = new JTextField();
                        A2.setDocument(createNumericDocumentWithMaxLength1(2));
                        A2.setBounds(210, 180, 32, 25);
                      
                        klasse1 = new JLabel("Klasse: ");
                        klasse1.setFont(font);
                      
                        klasse1.setBounds(140, 183, 75, 15);
                        klasse1.setVisible(true);
                       
                         JLabel t2 = new JLabel("Anzahl:");
                         //Ergänzen//
                       
                         JLabel t3 = new JLabel("Klasse:");
                         //Ergänzen//
                      
                       
                         berechnen1.setBounds(160, 280, 115, 35);
                         berechnen1.addActionListener(new ActionListener() {
                           
                                                                                     

                            @Override
                            public void actionPerformed(ActionEvent a) {
                                // TODO Auto-generated method stub
                                 try {
                                     int n1;
                                     Scanner scan = new Scanner(A2.getText());
                                     n1 = scan.nextInt();
                                   
                                     if(A2.getText() == kl5) {                                 
                                    if(n1 >= 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                                    }
                                    if(n1 >= 28 && n1 < 35) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                                    }
                                    if(n1 >= 21 && n1 < 28) {
                                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                                    }
                                }
                                 } catch (NumberFormatException nfe){
                                     return;                                   
                                 }
                            }                           
                         });                       
                       
                     panel2.add(A1);
                     panel2.add(A2);
                     panel2.add(anzahl1);
                     panel2.add(klasse1);
                     panel2.add(berechnen1);
                     f2.add(panel2);                 
                       
                 }else {
                     if(box2.isSelected()) {
                            f.setVisible(false);
                            JFrame f3 = new JFrame();
                             f3.setVisible(true);
                             f3.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                             f3.setLocationRelativeTo(null);
                             f3.setTitle("Liegestütz");
                             f3.setBounds(100, 300, 500, 500);
                           
                             JLabel t2 = new JLabel("Anzahl:");
                             //Ergänzen//
                           
                             JLabel t3 = new JLabel("Klasse:");
                             //Ergänzen//
                     }else {
                         if(box3.isSelected()) {
                                f.setVisible(false);
                                JFrame f4 = new JFrame();
                                 f4.setVisible(true);
                                 f4.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                 f4.setLocationRelativeTo(null);
                                 f4.setTitle("Seilspringen");
                                 f4.setBounds(100, 300, 500, 500);
                               
                                 JLabel t2 = new JLabel("Anzahl:");
                                 t2.setBounds(12, 50, 100, 300);
                                 t2.setVisible(true);
                                 JLabel t3 = new JLabel("Klasse:");
                                 //Ergänzen//
                       
                         panel.add(t2);                      
                         }                       
                     }
                 }
            }
        });
      
        box1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub              
                if(box1.isSelected() == true) {
                    box2.setSelected(false);
                    box3.setSelected(false);              
                }
            }
        });
        box2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub              
                 if(box2.isSelected() == true) {
                    box1.setSelected(false);
                    box3.setSelected(false);              
                }
            } 
        });
        box3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ac) {
                // TODO Auto-generated method stub              
                 if(box3.isSelected() == true) {
                    box1.setSelected(false);
                    box2.setSelected(false);
                }
            }
        });
      
        panel.add(button);
        panel.add(box1);
        panel.add(box2);
        panel.add(box3);
        panel.add(text1);
        f.add(panel);      
        }  
    }
 
Zuletzt bearbeitet von einem Moderator:
Willst du nur dass der Code läuft, dann reicht Nr. 4 aus meinem obigen Post.
Wenn du Verbesserungswünsche willst, dann solltest du dir den Rest auch zu Herzen nehmen und
6. Verstehen, was "static" ist, und es nur verwenden wenn nötig, d. h. nicht im vorliegenden Fall.
7. Unnötige Leerzeilen löschen.
 
"funzt immer noch net" ist keine Fehlerbeschreibung, bitte beschreibe doch den aktuellen Fehler genauer.
Fliegt eine Exception oder wird nur das if nicht betreten?
 
Moin,

warum deklarierst Du den Actionlistener für berechnen1 im ActionListener von button ... also nur dann, wenn der Button gedrückt wurde ??
Klingt ein wenig obskur .... 😵

Gruß Klaus
 
@Joose Also es hängt sich nicht mehr auf, also das Programm. Allerdings passiert nicht, wenn ich den Button drücke.

@VfL_Freak Ich weiß nicht genau was du meinst, sorry, bin noch Einsteiger.

p.s.: Aber am Samstag gibt's für uns einen Heimsieg 😉

Grüße
 
p.s.: Aber am Samstag gibt's für uns einen Heimsieg
nun mal nicht den Teufel an die Wand 😀

Was ich meinte, war, dass Du keinen Actionlistener innerhalb eines anderen Actionlistener zuweisen solltest!
So wie Du es gepostet hast, geschieht das "berechnen1.addActionListener(new ActionListener() {..." nur im actionPerformed des Actionlisteners von button, also nur dann, wenn dieser Button angeklickt wird! Andernfalls kennt berechnen1 den Listener nicht!
Du musst ihn separat deklarieren, also paralell hierzu "button.addActionListener(new ActionListener() {..."

Gruß Klaus
 
genauso, wie beispielsweise die Actionlistener zu box1 oder box2 !!
Du macht IMHO eh' viel zuviel 'Oberfläche' im ActionListener!
Vielleicht solltest Du Dir erstmal an paar Grundlagen zur GUI-Programmierung anschauen - sorry 🙁

Gruß Klaus
 
Java:
    public void berechnen1click() {
        berechnen1.addActionListener(new ActionListener() {   
            @Override
            public void actionPerformed(ActionEvent a) {
                // TODO Auto-generated method stub
                try {
                    int n1;
                    Scanner scan = new Scanner(A2.getText());
                    n1 = scan.nextInt();
                    
                    if(A2.getText().equals(kl5)) {                                 
                    if(n1 >= 35) {
                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 1 erreicht!");
                    }
                    if(n1 >= 28 && n1 < 35) {
                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 2 erreicht!");
                    }
                    if(n1 >= 21 && n1 < 28) {
                        JOptionPane.showMessageDialog(null, "Sie hätten die Note 3 erreicht!");
                    }
                }
                } catch (InputMismatchException ime){
                    return;
                }
            }
        });
    }

So habe ich es jetzt probiert, klappt immer noch nicht. :/
 
Also ich bin raus.
In dem geposteten Code fängst du jetzt zwar die Exception, aber ohne wirkliche Behandlung.
Und berechnen1click sieht für mich so aus wie eine Methode, die letzten Endes auch aus einem ActionListener aufgerufen wird. Damit ist der Hinweis, ActionListener nicht in der actionPerformed eines anderen ActionListeners zu registrieren, nicht umgesetzt.
Und du hast wieder mal keine vollständigen Code gepostet, sondern nur eine Methode, von der unklar, wozu sie gehört, und wo und ob überhaupt sie aufgerufen wird.
 
Hat der TO vielleicht nur nicht begriffen, dass der ActionListener ein Callback ist und nicht sofort ausgeführt wird, wenn man ihn an eine Komonente bindet? Für mich sieht das letzte Snippet so aus...
 

Neue Themen


Zurück
Oben