【问题标题】:Java - add Enter ButtonJava - 添加输入按钮
【发布时间】:2015-06-29 19:38:39
【问题描述】:

我想在按下 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

        }
    }
}

【问题讨论】:

    标签: java swing button enter


    【解决方案1】:

    如果你想添加一个“进入事件”,你必须在Textfield中添加一个KeyListener,监听Enter-Key并执行相同的代码,你会在按下按钮时执行.

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

    【讨论】:

      【解决方案2】:

      像这样将 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);
      

      【讨论】:

        【解决方案3】:

        这是因为“专注”。您需要为 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;
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-01
          • 2016-08-26
          • 2012-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多