Java - 添加回车按钮

Java - add Enter Button

我想在按下 Enter 按钮时合并两个字符串。

此外,当我从 TextField 切换到 Button 时,它在我按下 Space 时有效,但在按 Enter 时无效。 Java 这正常吗?

我的代码如下:

(评论是德语的,所以你可以忽略它们,如果你不懂语言)

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

        }
    }
}

如果你想添加一个"Enter Event",你必须添加一个KeyListenerTextfield,监听Enter键并执行相同的代码,您将在按下按钮时执行。

注意:如果您想从文本字段中按 Enter,这就是您需要做的。所以你不需要使用Tab切换到Button

像这样将 keyListener 添加到您的按钮 but1

// 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!!! :)
        }
    }
}

注意:如果您希望在各种元素中执行此操作,例如JTextField,请不要动态声明侦听器:

像这样声明 KeyListener

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!!! :)
        }
    }

并将其添加到您需要的元素中:

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

这是因为"Focus"。您需要为 TextFields 添加 KeyListener。

@Override
public void keyTyped(KeyEvent e) {
    recognizeKey(e);
}

@Override
public void keyPressed(KeyEvent e) {
    recognizeKey(e);
}

@Override
public void keyReleased(KeyEvent e) {
    recognizeKey(e);
}
public void recognizeKey(KeyEvent e){
    int keyCode = e.getKeyCode();
    switch(keyCode) {
        case KeyEvent.VK_ENTER:
            //TODO: do something
            break;
        default:
            //TODO: do something
            break;
    }

}