Search code examples
javaswingbuttonenter

Java - add Enter Button


I want to combine two Strings when I push the Enter-Button.

Also when I Tab from the TextField to the Button it works when i push Space but not with Enter. Is this normal for Java ?

My Code looks like:

(Comments are in German so you can just ignore them, if you don't understand the language)

package demo;                                                           // Gehört zum Paket demo

import java.awt.*;                                                  // Abstract Windows Toolkit importieren
import java.awt.event.*;                                            // Abstract Windows Toolkit Events importieren

import javax.swing.*;                                               // Swing importieren

/** @author 
    @version 1.0*/

public class strings  extends JFrame implements ActionListener{     // Klasse strings auf public gesetzt - erweitert mit JFrame - implementiert Action Listener

    JButton but1;                                                   // Indiziert Button (für GUI)
    JTextField tfstring;                                            // Indiziert TextFeld (für GUI)
    JTextField tfstring2;                                           // Indiziert TextFeld (für GUI)
    JTextField endstring;                                           // Indiziert Ausgabefeld (für GUI)                                          
    String str1;                                                    // Indiziert String
    String str2;                                                    // Indiziert String
    String fullstring;                                              // Indiziert Ausgabe für beide Strings

    public strings() {                                              // Konstrukt strings auf public gesetzt

        JFrame frame = new JFrame("Strings");                       // Neues Fenster mit Titel (für GUI)
        JPanel Panel = new JPanel();                                // Container erstellen
        JLabel label = new JLabel("Ihr String 1:");                 // Text einfügen
        Panel.add(label);                                           // Label in Pannel einfügen
        tfstring = new JTextField("", 15);                          // Textfeld erstellen (für GUI)
        Panel.add(tfstring);                                        // Text Feld String in Panel einfügen
        JLabel label2 = new JLabel("Ihr String 2:");                // Textfeld erstellen (für GUI)
        Panel.add(label2);                                          // Label in Panel einfügen
        tfstring2 = new JTextField("", 15);                         // Textfeld erstellen (für GUI)
        Panel.add(tfstring2);                                       // Text Feld String in Panel einfügen
        but1 = new JButton("OK");                                   // Button erstellen
        but1.addActionListener(this);                               // Methode für den Button erstellt
        Panel.add(but1);                                            // Button in Panel einfügen
        JLabel label3 = new JLabel("Fertiger String:");             // Ausgabefeld erstellt
        Panel.add(label3);                                          // Label in Oannel ainfügen
        endstring = new JTextField("", 20);                         // textfeld für Ausgabe
        endstring.setEditable(false);                               // Sperrt Ausgabefeld
        Panel.add(endstring);                                       // Fertiger String in Panel einfügen

        frame.add(Panel);                                           // Panel hinzufügen
        frame.setSize(900,75);                                      // Grösse des Fensters     
        frame.setVisible(true);                                     // Panel sichtbar machen
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       // Standart Operation beim Schliesen des Fensters erstellt

    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub

        strings st = new strings();                                 // Konstruktor ins main einbinden

    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource() == this.but1){                             // Methode für Button festlegen

            str1 = tfstring.getText();                              // String 1 nimmt Text von tfstring
            str2 = tfstring2.getText();                             // String 2 nimmt Text von tfstring 2
            fullstring = str1 + str2;                               // Ausgabe beider Strings aus String 1 und String 2 zusammensetzen

            endstring.setText((fullstring));                        // Fertiger String nimmt Text von der Ausgabe beider Strings

        }
    }
}

Solution

  • Add keyListener to your button but1 like that:

    // declare the listener
    but1.addKeyListener(new KeyListener() {
        // listen to keys
        public void keyPressed(KeyEvent e){
            // find ENTER key press
            if(e.getKeyCode() == KeyEvent.VK_ENTER){
                // do your stuff here!!! :)
            }
        }
    }
    

    NOTE: if you want this action be performed in various elements like JTextField don't declare the listener on the fly:

    Declare the KeyListener like this:

    KeyListener listener = new KeyListener() {
        // listen to keys
        public void keyPressed(KeyEvent e){
            // find ENTER key press
            if(e.getKeyCode() == KeyEvent.VK_ENTER){
                // do your stuff here!!! :)
            }
        }
    

    And add it to the elements you need:

    but1.addKeyListener(listener);
    tfstring.addKeyListener(listener);