首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

Java Button
EN

Stack Overflow用户
提问于 2015-04-22 09:02:36
回答 3查看 1.3K关注 0票数 1

当我按Enter-Button时,我想组合两个字符串。

此外,当我从TextField标签到按钮时,当我按空格时工作,但不使用Enter。这对Java来说正常吗?

我的代码看起来是:

(注释是德语的,所以如果你不懂德语,你就可以忽略它们)

代码语言:javascript
运行
复制
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

        }
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-22 09:08:38

将keyListener添加到按钮but1中:

代码语言:javascript
运行
复制
// 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

代码语言:javascript
运行
复制
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!!! :)
        }
    }

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

代码语言:javascript
运行
复制
but1.addKeyListener(listener);
tfstring.addKeyListener(listener);
票数 3
EN

Stack Overflow用户

发布于 2015-04-22 09:05:17

如果您想要添加一个"Enter事件“,您必须将一个KeyListener添加到Textfield中,侦听Enter-Key并执行相同的代码,然后在按下按钮时执行。

注意:如果要从Textfield按Enter,则需要这样做。所以您不需要使用Tab来切换到Button

票数 1
EN

Stack Overflow用户

发布于 2015-04-22 09:09:12

这是因为“专注”。您需要为KeyListener添加TextFields。

代码语言:javascript
运行
复制
@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;
    }

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29792610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档