2015-04-22 151 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; 
    } 

}