检测JTextField中的enter键并执行actionperformed

时间:2014-03-18 06:23:42

标签: java swing actionlistener

正如我所见,许多答案对像我这样的入门级学生来说太模糊了。

我首先按addActionListner(this)JTextField的步骤进行操作。

我接下来想做什么,最让人困惑的是:

public void actionperformed(Actionevent ae){
     if(ae.getSource() == "Enter pressed")
         {
          outArea.setText(result);
         }
}

这不起作用,因为我觉得代码ae.getSource() == "Enter presses"无法正常工作,甚至我替换了我在actionPerformed下执行的操作,如System.out.println这样简单的打印行命令(" working& #34;),它不会执行。

如果按下按钮,我会这样做。

    public void actionperformed(Actionevent ae){
     if(ae.getSource() == "JButton")
         {
          System.out.println("JButton was pushed");
         }
}

无论如何,假设我有一个GUI,其中包含一些给定的代码:

  public static void main(string[] args){
 new myProg();
 } 
  public myProg(){
  ....
  buildTheGUI();
  ...}

           }
//GUI Objects
 ...
JTextField input = new JTextField(10);
 ...

//method building the GUI

public void buildTheGUI(){
...
input.addActionListner(this);
...

//a method called actionPerformed
public void actionperformed(Actionevent ae){
}

我现在正试图通过actionListner检测输入键,而不是任何其他方法,因为它已经给出了。

2 个答案:

答案 0 :(得分:2)

首先,actionPerformed由动作事件触发,通常在大多数系统上,这由 Enter 键(带有JTextField的上下文)触发......所以你不需要检查它。

其次,source的{​​{1}}通常是触发它的控件,在这种情况下就是ActionEvent

第三,Java中的JTextField比较是通过String方法...

完成的
String#equals

答案 1 :(得分:0)

您对Button的actionPerformed方法错误,请尝试更好:

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() instanceof JButton) {
        JButton button = (JButton) e.getSource();
        System.out.println("This button was pushed: " + button.getText());
    }
}

您的KeyListener尝试使用它来了解它是如何工作的:

@Override
    public void keyPressed(KeyEvent e) {
        System.out.println(e.getKeyChar());
        System.out.println(e.getKeyCode());
    }

别忘了让您的班级实施ActionListenerKeyListener