2015-04-22 106 views
1

我想在按下Enter按钮时组合两个字符串。Java - 添加输入按钮

此外,当我从TextField Tab键到按钮它的作品时,我推空间,但没有回车。这对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 

     } 
    } 
} 

回答

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); 
1

如果你想添加一个“输入事件“,则必须将KeyListener添加到Textfield,收听Enter -Key并执行相同的代码,您将在按下按钮时执行该代码。

注意:如果要从文本字段中按Enter,则需要执行此操作。所以,你不需要使用Tab键切换到按钮

-1

这是因为,“焦点访谈”的。您需要为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; 
    } 

}