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",你必须添加一个KeyListener
到Textfield
,监听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;
}
}
我想在按下 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",你必须添加一个KeyListener
到Textfield
,监听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;
}
}