Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren

B0hn3

Mitglied
Ich habe zu meinen Buttons einen ActionListener geaddet, ganz normal, so dass er auf Klicken mit dem Krusor geagiert, jetzt würde ich noch gerne wollen, dass wenn der Button selected ist (z.B. mit der Tab-Taste), er auch auf Enter reagiert. Wie macht man das? Bitte einfach und ausführlich erklären.
 
Könntest das über Key Bindings abbilden:
Java:
public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Main().buildAndShowUI());
    }

    private void buildAndShowUI() {
        JFrame frame = new JFrame();
        frame.setLayout(new FlowLayout());
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);

        final ActionListener listener = event -> {
            System.out.println("Some action..");
            System.out.println("....");
        };
        
        JButton button = new JButton("Press me");
        button.addActionListener(listener);
        button.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ENTER"), "someAction");
        button.getActionMap().put("someAction", new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                listener.actionPerformed(e);
            }
        });

        frame.add(button);
        frame.add(new JTextField(20));

        frame.setVisible(true);
    }
}
 
Was sagt der Fehler denn? Zeig mal die kompletten Code dazu und bitte nicht als Bild sondern via Code Tags

Ich danke dir sehr für deine Mühe, aber ein Youtube Video hat mir geholfen, das Problem zu lösen. Ich hab an den Button "go" neben dem ActionListener einen KeyListener geaddet und jetzt reagiert er auf beides, Mausklick und Enter, wenn der Button ausgewählt ist. Ich wusste nicht, dass das geht. Einziger Nachteil ist, dass ich die Befehle im ActionListener nochmal in den KeyListener kopieren musste. Geht bestimmt eleganter - oder auch nicht - keine Ahnung, ich immer schon froh, wenn die Sachen das tun, was sie sollen.
 
Mich würde dennoch interessieren, was du oben beim kopieren für ein Fehler gemacht hast.
Der Code oben funktioniert wunderbar und behebt genau das was du als "unschön" bezeichnest .. nämlich den doppelten Code (den man übrigens ggf auch in eine Methode auslagern könnte)
 
Mich würde dennoch interessieren, was du oben beim kopieren für ein Fehler gemacht hast.
Der Code oben funktioniert wunderbar und behebt genau das was du als "unschön" bezeichnest .. nämlich den doppelten Code (den man übrigens ggf auch in eine Methode auslagern könnte)


Code:
public class Frame extends JFrame
{
    Icon deuEngGross                     = new ImageIcon(getClass().getResource("deuEngGross.png"));
    Icon engDeuGross                     = new ImageIcon(getClass().getResource("engDeuGross.png"));
    Icon deuEngKlein                     = new ImageIcon(getClass().getResource("deuEngKlein.png"));
    Icon engDeuKlein                    = new ImageIcon(getClass().getResource("engDeuKlein.png"));
    Icon deuItaGross                     = new ImageIcon(getClass().getResource("deuItaGross.png"));
    Icon itaDeuGross                     = new ImageIcon(getClass().getResource("itaDeuGross.png"));
    Icon deuItaKlein                     = new ImageIcon(getClass().getResource("deuItaKlein.png"));
    Icon itaDeuKlein                     = new ImageIcon(getClass().getResource("itaDeuKlein.png"));
    Icon fremd                             = new ImageIcon(getClass().getResource("fremd.png"));
    Icon fremdKlein                     = new ImageIcon(getClass().getResource("fremdKlein.png"));
    Icon pfeil                             = new ImageIcon(getClass().getResource("pfeil.png"));
    
    Font flaggeSchrift                    = new Font("Times New Roman", Font.PLAIN, 28);
    Font merkenSchrift                    = new Font("Tahoma", Font.PLAIN, 20);
    Font anzeigeSchrift                    = new Font("Tahoma", Font.PLAIN, 35);
    Font eingabeSchrift                    = new Font("Tahoma", Font.PLAIN, 20);
    Font ergebnisSchrift                = new Font("Tahoma", Font.PLAIN, 20);
    Font titelSchrift                    = new Font("Aharoni", Font.PLAIN, 40);
    Font areaSchrift                    = new Font("Tahoma", Font.PLAIN, 17);
    Font gemerkteSchrift                 = new Font("Tahoma", Font.PLAIN, 18);
    Font löschenSchrift                    = new Font("Tahoma", Font.PLAIN, 10);
    
    JButton DeuEng                         = new JButton(deuEngGross);
    JButton EngDeu                         = new JButton(engDeuGross);
    JButton DeuIta                        = new JButton(deuItaGross);
    JButton ItaDeu                        = new JButton(itaDeuGross);
    JButton    Fremd                        = new JButton(fremd);
    JButton wiederholen                    = new JButton("Falsche wiederholen");
    JButton go                            = new JButton("Go");
    JButton go2                            = new JButton("Go");
    JButton home                        = new JButton();   
    JButton home2                        = new JButton();
    JButton merken                        = new JButton("!");
    JButton merkenLinks                    = new JButton("!");
    JButton gemerkte                    = new JButton("?");
    JButton gemerkte2                    = new JButton("?");
    JButton delete                        = new JButton("De");
    
    JPanel buttonPanel                     = new JPanel();
    JPanel panel1                         = new JPanel();
    JPanel panel2                        = new JPanel();
    JPanel panel3                        = new JPanel();
    JPanel panel4                        = new JPanel();
    JPanel panel5                        = new JPanel();
    JPanel panel6                        = new JPanel();
    JPanel panel7                        = new JPanel();
    JPanel panel7_1                        = new JPanel();
    
    JLabel titel                        = new JLabel("learn-engine");
    JLabel neue                            = new JLabel("Neue: ");
    JLabel falsche                      = new JLabel("Falsch: ");
    JLabel reguläreListeAnzahl            = new JLabel();
    JLabel falscheListeAnzahl            = new JLabel();
    JLabel ergebnisVokabeln                = new JLabel();
    JLabel ergebnisFremdwörter            = new JLabel();
    JLabel richtigeAntwort2                 = new JLabel();
    JLabel kleineFlagge                 = new JLabel();
    JLabel kleineFlagge2                 = new JLabel();
    JLabel fremdPos                        = new JLabel();
    JLabel fremdSize                    = new JLabel();
    JLabel kategorie                    = new JLabel();

    JTextField eingabeVokabeln            = new JTextField();
    JTextField eingabeFremdwörter        = new JTextField();
    
    JTextArea textArea                    = new JTextArea(8,23);
    JTextArea textAreaKlein                = new JTextArea(5,18);
    JTextArea textAreaGemerkte             = new JTextArea(9,21);
    JTextArea textAreaAnzeige             = new JTextArea();
    JTextArea textAreaLetzteVokabel        = new JTextArea();
    JTextArea textAreaRichtigeAntwort     = new JTextArea();     
        
    JScrollPane scrollKlein             = new JScrollPane(textAreaKlein, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    JScrollPane scroll                    = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);   
    JScrollPane scrollGemerkte             = new JScrollPane(textAreaGemerkte, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);   
    
    //die Methode nächsteVokabel() bedient sich immer aus der reguläeListe
    List <Vokabeln> reguläreListe         = new ArrayList<Vokabeln>();   
    // lagerListe dient zum Zwischenspeicher, wenn über das Menu der Modus gewechselt wurde
    List <Vokabeln> lagerListe             = new ArrayList<Vokabeln>();
    List <Vokabeln> widerholenListe     = new ArrayList<Vokabeln>();   
    List <Vokabeln> notierenListe         = new ArrayList<Vokabeln>();   
    
    String kategorienArray    [] = {"0", "1", "2", "3"};
    JComboBox menu                        = new JComboBox(kategorienArray);
    
    int nr = 0;;
    int nr2 = 0;
    boolean gespeicherte = false;
    boolean fremdJa = false;
    int letzterModus;
    
    String letzteVokabelSpeicher="";
    String richtigeAntwortSpeicher="";
    String einsSpeicher="";
    String zweiSpeicher="";
    String ausgabe = "";

    
    Frame()
    {
        setResizable(false);
        setVisible(true);
        setTitle("Vokabeltrainer");
        setLayout(null);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setBackground(Color.BLACK);
        
//buttonPanel
        buttonPanel.setLayout(null);
        buttonPanel.setBounds(0,0,1080,450);
        buttonPanel.setBackground(Color.BLACK);
        add(buttonPanel);
        
            buttonPanel.add(titel);
            titel.setBounds(400,40,300,50);
            titel.setFont(titelSchrift);
            titel.setForeground(Color.WHITE);
            
            buttonPanel.add(DeuEng);
            DeuEng.setBounds(50,150,310,100);
            DeuEng.addActionListener(new StartMenüListener());
            
                
            buttonPanel.add(EngDeu);
            EngDeu.setBounds(50,275,310,100);
            EngDeu.addActionListener(new StartMenüListener());
        
            buttonPanel.add(DeuIta);
            DeuIta.setBounds(385,150,310,100);
            DeuIta.addActionListener(new StartMenüListener());
            
            buttonPanel.add(ItaDeu);
            ItaDeu.setBounds(385,275,310,100);
            ItaDeu.addActionListener(new StartMenüListener());
            
            buttonPanel.add(Fremd);
            Fremd.setBounds(720,150,310,100);
            Fremd.addActionListener(new StartMenüListener());
            
//panel1    Vokabeln - Links
        panel1.setBounds(0,0,280,550);
        panel1.setLayout(null);
        panel1.setBackground(Color.BLACK);
        panel1.setVisible(true);
        
        add(panel1);
        
        
            panel1.add(home);
            home.setBounds(5,5,55,32);
            home.setBackground(Color.BLACK);
            home.setIcon(pfeil);
            home.setBorderPainted(false);
            home.addActionListener(new HomeListener());
            
            panel1.add(ergebnisVokabeln);
            ergebnisVokabeln.setBounds(30,120,150,50);
            ergebnisVokabeln.setFont(ergebnisSchrift);
            
            panel1.add(textAreaLetzteVokabel);
            textAreaLetzteVokabel.setBounds( 30, 200, 230, 72);
            textAreaLetzteVokabel.setFont(ergebnisSchrift);
            textAreaLetzteVokabel.setForeground(Color.WHITE);
            textAreaLetzteVokabel.setBackground(Color.BLACK);

            panel1.add(textAreaRichtigeAntwort);
            textAreaRichtigeAntwort.setBounds( 30, 275, 230, 72);
            textAreaRichtigeAntwort.setFont(ergebnisSchrift);
            textAreaRichtigeAntwort.setForeground(Color.GREEN);
            textAreaRichtigeAntwort.setBackground(Color.BLACK);
            
            textAreaRichtigeAntwort.setLineWrap(true);
            textAreaRichtigeAntwort.setWrapStyleWord(true);
            textAreaRichtigeAntwort.setEditable(false);
        
            
            textAreaLetzteVokabel.setLineWrap(true);
            textAreaLetzteVokabel.setWrapStyleWord(true);
            textAreaLetzteVokabel.setEditable(false);
        
            
            panel1.add(merkenLinks);
            merkenLinks.setBounds(233,0,45,25);
            merkenLinks.setFont(merkenSchrift);
            merkenLinks.setBackground(Color.BLACK);
            merkenLinks.setForeground(Color.WHITE);

            merkenLinks.addActionListener(new MerkenLinksListener());
            merkenLinks.setToolTipText("merken");
            
        
//panel2    Vokabeln - Rechts
        panel2.setBounds(280,0,600,600);
        panel2.setLayout(null);
        panel2.setBackground(Color.WHITE);
        panel2.setVisible(true);
        add(panel2);
        
            panel2.add(wiederholen);
            wiederholen.setBounds( 175, 496, 175 , 25);
            wiederholen.setBackground(Color.WHITE);
            wiederholen.addActionListener(new WiederListener());
            
            panel2.add(merken);
            merken.setBounds(476,0,45,25);
            merken.setFont(merkenSchrift);
            merken.setBackground(Color.WHITE);
            merken.addActionListener(new MerkenListener());
            merken.setToolTipText("merken");
            
            panel2.add(gemerkte);
            gemerkte.setBounds(520,0,45,25);
            gemerkte.setFont(merkenSchrift);
            gemerkte.setBackground(Color.WHITE);
            gemerkte.addActionListener(new GemerkteListener());
            gemerkte.setToolTipText("gemerkte");
            
            panel2.add(kategorie);
            kategorie.setBounds(0,0,80,20);
            kategorie.setOpaque(true);
            
            panel2.add(textAreaAnzeige);
            textAreaAnzeige.setBounds(60,130,500,150);
            textAreaAnzeige.setFont(anzeigeSchrift);
            textAreaAnzeige.setLineWrap(true);
            textAreaAnzeige.setWrapStyleWord(true);
            textAreaAnzeige.setEditable(false);
            
            panel2.add(menu);
            menu.setBounds(508,100,50,25);
            menu.setBackground(Color.WHITE);
            menu.addItemListener(new MenuListener());
            
            panel2.add(eingabeVokabeln);
            eingabeVokabeln.setBounds(75, 335, 300, 50);
            eingabeVokabeln.setFont(eingabeSchrift);
            eingabeVokabeln.addActionListener(new GoListener());
        
            panel2.add(go);
            go.setBounds(390,335,50,50);
            go.setBackground(Color.WHITE);
            go.addActionListener(new GoListener());
            go.addKeyListener(new TastenListener());
            
/* die folgenden zwei Zeilen waren von dir       
    button.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ENTER"), "someAction");
    button.getActionMap().put("someAction", new AbstractAction() {
*/   
            
            
            
            panel2.add(delete);
            delete.setBounds(390,390,50,50);
            delete.setBackground(Color.WHITE);
            delete.addActionListener(new LöschenListener());

            panel2.add(neue);
            neue.setBounds(470,478,50,25);
            
            panel2.add(falsche);
            falsche.setBounds(470,495,50,25);
            
            panel2.add(reguläreListeAnzahl);
            reguläreListeAnzahl.setBounds(523,478,50,25);
            
            panel2.add(falscheListeAnzahl);
            falscheListeAnzahl.setBounds(523,495,50,25);
            
            panel2.add(kleineFlagge);
            kleineFlagge.setBounds(175,5,300,30);
        
//panel3    Fremdwörter - Links
        panel3.setBounds(0,0,280,550);
        panel3.setLayout(null);
        panel3.setBackground(Color.BLACK);
        panel3.setVisible(true);
        add(panel3);
            
            panel3.add(home2);
            home2.setBounds(5,5,55,32);
            home2.setBackground(Color.BLACK);
            home2.setIcon(pfeil);
            home2.setBorderPainted(false);
            home2.addActionListener(new HomeListener());
            
            panel3.add(ergebnisFremdwörter);
            ergebnisFremdwörter.setBounds(30,100,150,50);
            ergebnisFremdwörter.setFont(ergebnisSchrift);
            ergebnisFremdwörter.setForeground(Color.RED);
            
            panel3.add(panel5);
            panel5.setBounds(25,160,210,100);
            panel5.setBackground(Color.BLACK);
            panel5.add(scrollKlein);
            
            panel3.add(richtigeAntwort2);
            richtigeAntwort2.setBounds( 50, 275, 250, 50);
            richtigeAntwort2.setFont(ergebnisSchrift);
            richtigeAntwort2.setForeground(Color.GREEN);
            
//panel4    Fremdwörter - Rechts
        panel4.setBounds(280,0,600,600);
        panel4.setLayout(null);
        panel4.setBackground(Color.WHITE);
        panel4.setVisible(true);
        add(panel4);
            
            panel4.add(go2);
            go2.setBounds(390,350,50,50);
            go2.setBackground(Color.WHITE);
            go2.addActionListener(new GoListener());
        
            
            panel4.add(eingabeFremdwörter);
            eingabeFremdwörter.setBounds(75, 350, 300, 50);
            eingabeFremdwörter.setFont(eingabeSchrift);
            eingabeFremdwörter.addActionListener(new GoListener());
            
            panel4.add(kleineFlagge2);
            kleineFlagge2.setBounds(210,5,300,30);
            kleineFlagge2.setFont(flaggeSchrift);
            
            panel4.add(panel6);
            panel6.setBounds(75,100,350,200);
            panel6.setBackground(Color.WHITE);
            panel6.add(scroll);
            
            panel4.add(fremdPos);
            fremdPos.setBounds(500,20,50,20);
            
            panel4.add(fremdSize);
            fremdSize.setBounds(500,35,50,20);
            
            textArea.setLineWrap(true);
            textArea.setWrapStyleWord(true);
            textArea.setEditable(false);
            textArea.setFont(areaSchrift);
            
//panel7    Anzeige notierte Vokabeln
        add(panel7);
        panel7.setBounds(280,0,600,600);
        panel7.setLayout(null);
        panel7.setBackground(Color.WHITE);
        panel7.setVisible(true);
            
            panel7.add(gemerkte2);
            gemerkte2.setBounds(518,0,45,25);
            gemerkte2.setFont(merkenSchrift);
            gemerkte2.setBackground(Color.WHITE);
            gemerkte2.addActionListener(new GemerkteListener());
            gemerkte2.setToolTipText("zurück");
            
            panel7.add(panel7_1);
            panel7_1.setBounds(75,100,400,250);
            panel7_1.setBackground(Color.WHITE);
            panel7_1.add(scrollGemerkte);
            
            textAreaGemerkte.setLineWrap(true);
            textAreaGemerkte.setWrapStyleWord(true);
            textAreaGemerkte.setEditable(false);
            textAreaGemerkte.setFont(gemerkteSchrift);
            textAreaGemerkte.setEditable(true);
            
        
        startMenu();
    } 
    
    
    public void startMenu()
    {   
        
        ergebnisFremdwörter.setVisible(false);
        richtigeAntwort2.setVisible(false);
        
        
        nr=0;
        reguläreListe.removeAll(reguläreListe);
        lagerListe.clear();
        
        widerholenListe.removeAll(widerholenListe);
        notierenListe.removeAll(notierenListe);
        eingabeVokabeln.setVisible(true);

        setSize(1080,450);
        setLocationRelativeTo(null);
        buttonPanel.setVisible(true);
        panel3.setVisible(false);
        panel4.setVisible(false);
        panel1.setVisible(false);
        panel2.setVisible(false);   
        panel5.setVisible(false);//kleine TextArea
        panel7.setVisible(false);
    }
        //checkt ab ob doppelte gibts
        public void abchecken(){
                    
            
            
            for(int i = 0; i < reguläreListe.size()-1; i++)
            {
                if(reguläreListe.get(i).eins.equals(reguläreListe.get(i+1).eins)) {
                    System.out.println(reguläreListe.get(i).eins);
                    System.out.println(reguläreListe.get(i+1).eins);

                }
                    
            }
            
            
            
            
        }
    
    
    
    private class StartMenüListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            buttonPanel.setVisible(false);
            setSize(850,550);
            
            if(e.getSource()==DeuEng)
            {
                panel1.setVisible(true);
                panel2.setVisible(true);
                Vokabeln.einsZwei=true;
                kleineFlagge.setIcon(deuEngKlein);
                englischListe.listeErstellen(reguläreListe);
                nächsteVokabel();               
                Vokabeln.einsZwei=true;                        abchecken();                   
            }
            else if(e.getSource()==EngDeu)
            {
                panel1.setVisible(true);
                panel2.setVisible(true);
                Vokabeln.einsZwei=false;
                kleineFlagge.setIcon(engDeuKlein);
                englischListe.listeErstellen(reguläreListe);
                nächsteVokabel();
                Vokabeln.einsZwei=true;
            }
            else if(e.getSource()==DeuIta)
            {
                panel1.setVisible(true);
                panel2.setVisible(true);
                Vokabeln.einsZwei=true;
                kleineFlagge.setIcon(deuItaKlein);
                italienischListe.listeErstellen(reguläreListe);
                nächsteVokabel();

            }
            else if(e.getSource()==ItaDeu)
            {
                panel1.setVisible(true);
                panel2.setVisible(true);
                Vokabeln.einsZwei=false;
                kleineFlagge.setIcon(itaDeuKlein);
                italienischListe.listeErstellen(reguläreListe);
                nächsteVokabel();
                Vokabeln.einsZwei=true;
            }
            else if (e.getSource()==Fremd)
            {
                panel3.setVisible(true);
                panel4.setVisible(true);
//                kleineFlagge2.setIcon(fremdKlein);
                kleineFlagge2.setText("ABCDEF");
                Vokabeln.einsZwei=true;
                fremdwoerterListe.listeErstellen(reguläreListe);
                fremdJa=true;
                textArea.setForeground(Color.RED);
                nächsteVokabel();   
            }
        }
    }
    
    
    
    
    
    
    public void nächsteVokabel()
    {
        if(!fremdJa)//Vokabeln werden abgefragt
        {   
            eingabeVokabeln.setVisible(true);
            go.setVisible(true);
            delete.setVisible(true);
            reguläreListeAnzahl.setText(""+reguläreListe.size());
            falscheListeAnzahl.setText(""+widerholenListe.size());
            eingabeVokabeln.requestFocus();
            if(reguläreListe.size() != 0)
            {
                
                eingabeVokabeln.setText("");
                Random würfel = new Random();
                nr=würfel.nextInt(reguläreListe.size());
                textAreaAnzeige.setText(reguläreListe.get(nr).eins);
                einsSpeicher=reguläreListe.get(nr).eins;
                zweiSpeicher=reguläreListe.get(nr).zwei;
                kategorie.setText("Kategorie "+reguläreListe.get(nr).modus);
            }   
            else
            {
                String einsSpeicher="";
                String zweiSpeicher="";
                eingabeVokabeln.setVisible(false);
                go.setVisible(false);
                delete.setVisible(false);
                textAreaAnzeige.setText("Ende");
                kategorie.setText("");
            }
        }
        else //Fremdwörter werden abgefragt
        {   
            eingabeFremdwörter.setText("");
            if(reguläreListe.size()==0)       
            {
                textArea.setText("Ende");
            }
            else //Liste hat noch Inhalt
            {
                if(nr==reguläreListe.size())
                {
                    nr=0;
                }
                textArea.setText(reguläreListe.get(nr).zwei);
                eingabeFremdwörter.requestFocus();
            }
            fremdPos.setText("pos "+nr);
            fremdSize.setText("size "+reguläreListe.size());                                           
        }
    }
    
    
    
    
    
    
    private class GoListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            if(!fremdJa)
            {
                if(gespeicherte==false) //Neue Vokabeln Anfang                   
                {
                    if(eingabeVokabeln.getText().equals(reguläreListe.get(nr).zwei)) //Richtige Antowrt
                    {
                        letzteVokabelSpeicher = reguläreListe.get(nr).eins;
                        richtigeAntwortSpeicher = reguläreListe.get(nr).zwei;
                        ergebnisVokabeln.setForeground(Color.WHITE);
                        ergebnisVokabeln.setText("Richtig!");
                        textAreaLetzteVokabel.setText("");
                        textAreaRichtigeAntwort.setText("");
                        reguläreListe.remove(nr);
                        nächsteVokabel();
                    }
                    else // Falsche Antwort
                    {   
                        letzteVokabelSpeicher = reguläreListe.get(nr).eins;
                        richtigeAntwortSpeicher = reguläreListe.get(nr).zwei;
                        ergebnisVokabeln.setForeground(Color.RED);
                        ergebnisVokabeln.setText("Falsch!");
                        textAreaLetzteVokabel.setText(reguläreListe.get(nr).eins+":");
                        textAreaRichtigeAntwort.setText(reguläreListe.get(nr).zwei);
                        widerholenListe.add(new Vokabeln(reguläreListe.get(nr).modus, reguläreListe.get(nr).eins, reguläreListe.get(nr).zwei));   
                        reguläreListe.remove(nr);
                        nächsteVokabel();
                    }
                }// Neue Vokabeln Ende
                else // Falsche Vokabeln Anfang                                //falsche Vokabeln wurden abgefragt
                {
                    if(eingabeVokabeln.getText().equals(widerholenListe.get(nr2).zwei))
                    {   
                        widerholenListe.remove(nr2);
                        falscheVokabeln();
                        ergebnisVokabeln.setForeground(Color.WHITE);
                        ergebnisVokabeln.setText("Richtig!");
                        textAreaLetzteVokabel.setText("");
                        textAreaRichtigeAntwort.setText("");
                    }
                    else
                    {   
                        ergebnisVokabeln.setForeground(Color.RED);
                        ergebnisVokabeln.setText("Falsch!");
                        textAreaRichtigeAntwort.setText(widerholenListe.get(nr2).zwei);
                        textAreaLetzteVokabel.setText(widerholenListe.get(nr2).eins);
                        letzteVokabelSpeicher=widerholenListe.get(nr2).eins;
                        richtigeAntwortSpeicher=widerholenListe.get(nr2).zwei;
                        nr2++;
                        falscheVokabeln();
                    }
                }//Falsche Vokabelnn Ende   
            }
            else //Fremdwörter
            {   
                richtigeAntwort2.setVisible(true);
                ergebnisFremdwörter.setVisible(true);
                if(eingabeFremdwörter.getText().equals(reguläreListe.get(nr).eins))
                {
                    ergebnisFremdwörter.setForeground(Color.WHITE);
                    ergebnisFremdwörter.setText("Richtig!");
                    reguläreListe.remove(nr);
                    textAreaKlein.setText("");
                    richtigeAntwort2.setText("");
                    panel5.setVisible(false);
                    nächsteVokabel();
                    
                }
                else
                {
                    ergebnisFremdwörter.setText("Falsch!");
                    ergebnisFremdwörter.setForeground(Color.WHITE);
                    richtigeAntwort2.setForeground(Color.RED);
                    textAreaKlein.setText(reguläreListe.get(nr).zwei);
                    richtigeAntwort2.setText(reguläreListe.get(nr).eins);
                    panel5.setVisible(true);
                    nr++;
                    nächsteVokabel();
                }
            }
        }//Go-Methode
    }// GoLIstener
    
    
    
    
    
    private class HomeListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
            {
            ergebnisVokabeln.setText("");
            textAreaLetzteVokabel.setText("");
            textAreaRichtigeAntwort.setText("");
            textAreaGemerkte.setText("");
            gespeicherte=false;
            fremdJa=false;
            letzteVokabelSpeicher="";
            richtigeAntwortSpeicher="";
            einsSpeicher="";
            zweiSpeicher="";
            startMenu();
            }
    }
    
    
    
    
    

    private class TastenListener implements KeyListener
    {

        @Override
        public void keyPressed(KeyEvent e)
        {
            if(e.getKeyCode()==KeyEvent.VK_ENTER)
            {
                if(!fremdJa)
            {
                if(gespeicherte==false) //Neue Vokabeln Anfang                   
                {
                    if(eingabeVokabeln.getText().equals(reguläreListe.get(nr).zwei)) //Richtige Antowrt
                    {
                        letzteVokabelSpeicher = reguläreListe.get(nr).eins;
                        richtigeAntwortSpeicher = reguläreListe.get(nr).zwei;
                        ergebnisVokabeln.setForeground(Color.WHITE);
                        ergebnisVokabeln.setText("Richtig!");
                        textAreaLetzteVokabel.setText("");
                        textAreaRichtigeAntwort.setText("");
                        reguläreListe.remove(nr);
                        nächsteVokabel();
                    }
                    else // Falsche Antwort
                    {   
                        letzteVokabelSpeicher = reguläreListe.get(nr).eins;
                        richtigeAntwortSpeicher = reguläreListe.get(nr).zwei;
                        ergebnisVokabeln.setForeground(Color.RED);
                        ergebnisVokabeln.setText("Falsch!");
                        textAreaLetzteVokabel.setText(reguläreListe.get(nr).eins+":");
                        textAreaRichtigeAntwort.setText(reguläreListe.get(nr).zwei);
                        widerholenListe.add(new Vokabeln(reguläreListe.get(nr).modus, reguläreListe.get(nr).eins, reguläreListe.get(nr).zwei));   
                        reguläreListe.remove(nr);
                        nächsteVokabel();
                    }
                }// Neue Vokabeln Ende
                else // Falsche Vokabeln Anfang                                //falsche Vokabeln wurden abgefragt
                {
                    if(eingabeVokabeln.getText().equals(widerholenListe.get(nr2).zwei))
                    {   
                        widerholenListe.remove(nr2);
                        falscheVokabeln();
                        ergebnisVokabeln.setForeground(Color.WHITE);
                        ergebnisVokabeln.setText("Richtig!");
                        textAreaLetzteVokabel.setText("");
                        textAreaRichtigeAntwort.setText("");
                    }
                    else
                    {   
                        ergebnisVokabeln.setForeground(Color.RED);
                        ergebnisVokabeln.setText("Falsch!");
                        textAreaRichtigeAntwort.setText(widerholenListe.get(nr2).zwei);
                        textAreaLetzteVokabel.setText(widerholenListe.get(nr2).eins);
                        letzteVokabelSpeicher=widerholenListe.get(nr2).eins;
                        richtigeAntwortSpeicher=widerholenListe.get(nr2).zwei;
                        nr2++;
                        falscheVokabeln();
                    }
                }//Falsche Vokabelnn Ende   
            }
            else //Fremdwörter
            {   
                richtigeAntwort2.setVisible(true);
                ergebnisFremdwörter.setVisible(true);
                if(eingabeFremdwörter.getText().equals(reguläreListe.get(nr).eins))
                {
                    ergebnisFremdwörter.setForeground(Color.WHITE);
                    ergebnisFremdwörter.setText("Richtig!");
                    reguläreListe.remove(nr);
                    textAreaKlein.setText("");
                    richtigeAntwort2.setText("");
                    panel5.setVisible(false);
                    nächsteVokabel();
                    
                }
                else
                {
                    ergebnisFremdwörter.setText("Falsch!");
                    ergebnisFremdwörter.setForeground(Color.WHITE);
                    richtigeAntwort2.setForeground(Color.RED);
                    textAreaKlein.setText(reguläreListe.get(nr).zwei);
                    richtigeAntwort2.setText(reguläreListe.get(nr).eins);
                    panel5.setVisible(true);
                    nr++;
                    nächsteVokabel();
                }
            }
            }
                        }

        @Override
        public void keyReleased(KeyEvent arg0) {
            // TODO Auto-generated method stub
            
        }

        @Override
        public void keyTyped(KeyEvent arg0) {
            // TODO Auto-generated method stub
            
        }
    }
    
    
    
    
    
    private class LöschenListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
            {
                ergebnisVokabeln.setForeground(Color.BLUE);
                ergebnisVokabeln.setText("Deleted");
                letzteVokabelSpeicher = reguläreListe.get(nr).eins;
                richtigeAntwortSpeicher = reguläreListe.get(nr).zwei;
                textAreaLetzteVokabel.setText(reguläreListe.get(nr).eins+":");
                textAreaRichtigeAntwort.setText(reguläreListe.get(nr).zwei);
                reguläreListe.remove(nr);
            
                nächsteVokabel();
            }
    }
    
    
    
    

    
//linkes Ausrufezeichen wurde geklickt   (Vokabel notieren)
    private class MerkenLinksListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            if(letzteVokabelSpeicher.isEmpty())
            {     
            }   
            else
            {
                notierenListe.add(new Vokabeln(letzterModus, letzteVokabelSpeicher, richtigeAntwortSpeicher));           
                ausgabe="";
                for(int i =0; i < notierenListe.size(); i++)
                {
                    ausgabe += notierenListe.get(i).eins + " = " + notierenListe.get(i).zwei + "\n";
                    textAreaGemerkte.setText(ausgabe);
                }
            }
            eingabeVokabeln.requestFocus();
        }
    }
    
    
    
    
    

//  rechtes Ausrufezeichen wurde gedrückt (Vokabel notieren)
    private class MerkenListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {       
            if(einsSpeicher.isEmpty())
            {     
            }   
            else
            {
                notierenListe.add(new Vokabeln(letzterModus, einsSpeicher.trim(), zweiSpeicher.trim()));
                ausgabe="";
                for(int i =0; i < notierenListe.size(); i++)
                {
                    ausgabe += notierenListe.get(i).eins + " = " + notierenListe.get(i).zwei + "\n";
                    textAreaGemerkte.setText(ausgabe);
                }
            }
            eingabeVokabeln.requestFocus();
        }
    }
    
    
    
    
    
// Das Fragezeichen wurde gedrückt (Notierte Vokabeln anschauen)
    private class GemerkteListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource()==gemerkte)
            {
                panel2.setVisible(false);
                panel7.setVisible(true);   
            }
            else if(e.getSource()==gemerkte2)
            {
                panel2.setVisible(true);
                panel7.setVisible(false);
            }
            eingabeVokabeln.requestFocus();
        }
    }
    
    
    
    
    
    
    // Der "Falsche wiederholen"-Button wurde gedrückt
    private class WiederListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {   
            ergebnisVokabeln.setText("");
            textAreaLetzteVokabel.setText("");
            textAreaRichtigeAntwort.setText("");
            letzteVokabelSpeicher="";
            richtigeAntwortSpeicher="";
            einsSpeicher="";
            zweiSpeicher="";
            falscheVokabeln();
        }
    }
    


    
    
    
    private class MenuListener implements ItemListener
    {
        @Override
        public void itemStateChanged(ItemEvent event)
        {
            if(event.getStateChange()==ItemEvent.SELECTED)
            {
                List <Vokabeln> zwischenListe = new ArrayList<Vokabeln>();

                for(int i = 0; i<reguläreListe.size();i++)
                {
                    zwischenListe.add(reguläreListe.get(i));
                }

                for(int i = 0; i<lagerListe.size();i++)
                {
                    zwischenListe.add(lagerListe.get(i));
                }
                reguläreListe.clear();
                lagerListe.clear();
        
    //reguläreListe leer
    //lagerListe leer
    //zwischenListe voll
                
                if(menu.getSelectedIndex()==0)
                {        System.out.println("Modus 0 ausgewählt");
                    for(int i = 0; i<zwischenListe.size(); i++)
                        reguläreListe.add(zwischenListe.get(i));
                    zwischenListe.clear();
                }
                else if(menu.getSelectedIndex()==1)
                {
                    System.out.println("Modus 1 ausgewählt");
                    for(int i = 0; i<zwischenListe.size();i++)
                    {
                        if(zwischenListe.get(i).modus==1)
                        {
                            reguläreListe.add(zwischenListe.get(i));
                        }
                        else
                        {
                            lagerListe.add(zwischenListe.get(i));
                        }
                    }
                }
                else if(menu.getSelectedIndex()==2)
                {
                    System.out.println("Modus 2 ausgewählt");
                    for(int i = 0; i<zwischenListe.size();i++)
                    {
                        if(zwischenListe.get(i).modus==2)
                        {
                            reguläreListe.add(zwischenListe.get(i));
                        }
                        else
                        {
                            lagerListe.add(zwischenListe.get(i));
                        }
                    }
                }
                else if(menu.getSelectedIndex()==3)
                {
                    System.out.println("Modus 3 ausgewählt");
                    for(int i = 0; i<zwischenListe.size();i++)
                    {
                        if(zwischenListe.get(i).modus==3)
                        {
                            reguläreListe.add(zwischenListe.get(i));
                        }
                        else
                        {
                            lagerListe.add(zwischenListe.get(i));
                        }
                    }
                }
                zwischenListe.clear();
                nächsteVokabel();
            }       
        }
    }//MenuListener
    
    

    
    
    public void falscheVokabeln()
    {   
        reguläreListeAnzahl.setText(""+reguläreListe.size());
        falscheListeAnzahl.setText(""+widerholenListe.size());
        eingabeVokabeln.setVisible(true);
        go.setVisible(true);
        eingabeVokabeln.setText("");
        if(widerholenListe.size()!=0) // Liste hat noch Inhalt
        {
            if(nr2==widerholenListe.size())
            {
                nr2=0;
            }
            gespeicherte=true;
            textAreaAnzeige.setText(widerholenListe.get(nr2).eins);
            kategorie.setText("Kategorie "+widerholenListe.get(nr2).modus);
            eingabeVokabeln.requestFocus();
            einsSpeicher=widerholenListe.get(nr2).eins;
            zweiSpeicher=widerholenListe.get(nr2).zwei;
        }
        else if (widerholenListe.size()==0) // Liste ist leer
        {
            einsSpeicher="";
            zweiSpeicher="";
            letzteVokabelSpeicher="";
            richtigeAntwortSpeicher="";
            gespeicherte=false;
            nächsteVokabel();
        }
    }
}
 
hey, es funktioniert
Klar funktioniert das, weil Swing auf AWT basiert. Mein Kommentar war auch nicht bierernst gemeint, es ist nicht so, dass das ein absolutes No-Go wäre. Andererseits bietet Swing eben entsprechende Möglichkeiten, also warum nicht nutzen?

Was den Code von @Robat betrifft: Du musst schon alle Zeilen kopieren und nicht nur zwei:
Java:
        button.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("ENTER"), "someAction");
        button.getActionMap().put("someAction", new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                listener.actionPerformed(e);
            }
        });
Wobei das eigentlich andersrum angedacht ist. In Swing hat man vom ActionListener abstrahiert und (Abstract)Action eingeführt. Eine Action ist dabei etwas mehr als nur ein Listener: eine Aktion hat einen Bezeichner, ein Mnemonic, einen Accelator Key (Shortcut) usw. und kann enabled/disabled werden. Der Witz dabei: die Komponenten , die über die Action konfiguriert wurden, werden automatisch aktiviert/deaktiviert.

Ach, bevor ich hier lang rumrede:
Java:
import java.awt.event.*;
import javax.swing.*;
import java.util.Base64;

public class Test {
     
    private static class FileOpenAction extends AbstractAction {
        FileOpenAction() {
            super("Öffnen...", Test.SYMBOL16);
            putValue(LARGE_ICON_KEY, Test.SYMBOL32);
            putValue(MNEMONIC_KEY, KeyEvent.VK_F);
            putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(
                    KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "Open");
        }
    }

    public void run() {
        Action action = new FileOpenAction();
        JButton disEnable = new JButton("Disable/Enable");
        disEnable.addActionListener(e -> action.setEnabled(!action.isEnabled()));

        JButton button = new JButton(action);
        button.getActionMap().put("open", action);
        button.getInputMap(JComponent.WHEN_FOCUSED)
             .put(KeyStroke.getKeyStroke("ENTER"), "open");

        JMenu fileMenu = new JMenu("Datei");
        fileMenu.add(new JMenuItem(action));

        JMenuBar mb = new JMenuBar();
        mb.add(fileMenu);

        JPanel buttons = new JPanel();
        buttons.add(button);
        buttons.add(disEnable);
         
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setJMenuBar(mb);
        frame.add(buttons);
        frame.setSize(800, 600);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Test().run());
    }

    private static final Icon SYMBOL16 = new ImageIcon(Base64.getDecoder().decode(
        "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAALiMAAC4jAXilP3YAAACuSURBVCjPhdAxagJhEMXx385+KXIAwTOkyDlyitwhR4mNB7AWrAMSyAEE7RSJWG1jZWEl+9ksS6L54nvNDPOfeTDcUYVHr4ZahE9ft9CTRu488aCWJEmtIuHZoIdfTJ1VXTf2Ae/9/rVHJLW5nba/keWuCt/qypv4Mf6t0LItBmTZNqz+fcMqLPrMW2WLsHQqAifLsHEoAgeb0NgXgb0mHK2LwNoxYSb9+Ykwc18X8NlG+07SlWkAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDYtMDFUMDI6MTQ6NDYrMDI6MDACDL43AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA2LTAxVDAyOjE0OjQ2KzAyOjAwc1EGiwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII="));

    private static final Icon SYMBOL32 = new ImageIcon(Base64.getDecoder().decode(
        "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAALiMAAC4jAXilP3YAAAFHSURBVEjHxZTBSsNAEIa/rFG0RRArFkEvXkS0R9FbH8KTz+abKHjxopf20q20EAgtpRVLsEEQY2w8bGOqTUyyEfz3sAmT+cj8wwz8t4yvpwrlhegbT0yzAVa5pM7Ht5jA4oLHbH+yj02wcF6opyWK2X3ETky0zEkawJzdp6zExs/xCeacikpvcR29rnEVU8Dv54ZSVMIuh9msmtMBexGgRjU3YJta5EGVh8R+Bz+aG2qJijIDoJRgoQIECZF3XsFgCxI/SZMBBrdsaKYDPJssc1wAcC9oFkiHpqCBr53u0xBIJtqACVJgM9QGDLEFYyxtgMVY4NHWBrTxBCDT1laCpkg1TF1cLYBLVwH6jLQAI/oK4GjaaOEogK6NEi9cKC2NeQyQEAI6Gja6dCDcSD0GrOdqpmBAD8KNZHLGZq4yDBzuCozhH+oTm8hytBN8JpYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDYtMDFUMDI6MTQ6NDYrMDI6MDACDL43AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA2LTAxVDAyOjE0OjQ2KzAyOjAwc1EGiwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII="));
}

Man beachte das Verhalten des Öffnen-Buttons bzw. dem dazugehörigen Menüeintrag, wenn man den Enable/Disable-Button verwendet.
 

Zurück
Oben