【问题标题】:Can't make JTextField ActionListener无法制作 JTextField ActionListener
【发布时间】:2013-12-28 21:58:57
【问题描述】:

我正在尝试将ActionListener 添加到JTextField 并使该文本字段本身成为动作侦听器。每当我这样做时,我都会收到一个错误,说

The method addActionListener(ActionListener) in the type JTextField is not applicable for the arguments (JTextField)

代码

String strBox1;

JTextField textBox1, textBox2, textBox3;

JTextArea textArea1, displayArea;

public textBoxes()
{       

    setLayout (new GridLayout(10,2));

    JLabel query1 = new JLabel("Daily Savings:");
    add(query1);
    textBox1 = new JTextField("Dsave", 5);
    add(textBox1);
    textBox1.addActionListener(textBox1);
    //textBox1.getDocument().addDocumentListener(new MyDocumentListener());

    JLabel query2 = new JLabel("Current Age:");
    add(query2);
    textBox2 = new JTextField("Cage", 5);
    add(textBox2);

    JLabel query3 = new JLabel("Initial Savings amount:");
    add(query3);
    textBox3 = new JTextField("ISA", 5);
    add(textBox3);

    JLabel query4 = new JLabel("Age of Retirement:");
    add(query4);
    JTextField textBox4 = new JTextField("AoR", 5);
    add(textBox4);

    JLabel query5 = new JLabel("Annual Retirement Income:");
    add(query5);
    JTextField textBox5 = new JTextField("ARI", 5);
    add(textBox5);

    JLabel query6 = new JLabel("Life Expectancy:");
    add(query6);
    JTextField textBox6 = new JTextField("LR", 5);
    add(textBox6);

    JLabel query7 = new JLabel("Interest Rate on Return of Savings:");
    add(query7);
    JTextField textBox7 = new JTextField("IRoRoS", 5);
    add(textBox7);

    JLabel query8 = new JLabel("Inflation %:");
    add(query8);
    JTextField textBox8 = new JTextField("I%", 5);
    add(textBox8);
}


class MyDocumentListener implements DocumentListener 
{
    public void insertUpdate(DocumentEvent e) {

    }
    public void removeUpdate(DocumentEvent e) {
        System.out.println("change -" + e);
    }
    public void changedUpdate(DocumentEvent e) {
    }
}

class MyTextActionListener implements ActionListener {

    public void actionPerformed(ActionEvent e) {

    }
}
}

【问题讨论】:

    标签: java swing awt actionlistener jtextfield


    【解决方案1】:

    您在addActionListener(..) 处输入了错误的参数。变化自

     textBox1.addActionListener(textBox1);
    

    到,

     textBox1.addActionListener(new ActionListener(){
    
       public void actionPerformed(ActionEvent ev){
           // Do the action event here.
       }
     });
    

    阅读How to Write ActionListener的教程。另外,请查看Javadoc

    【讨论】:

    • +1 是第一个提供基本解决方案和教程链接的人。 @OP 不要忘记查看教程中的目录以获取有关 Swing 基础知识的更多信息。
    【解决方案2】:

    错误会准确地告诉您代码有什么问题。就在这一行:

    textBox1.addActionListener(textBox1);
    

    此方法需要传入一个 ActionListener 的实例。也许您想使用 MyTextActionListener?

    textBox1.addActionListener(new MyTextActionListener());
    

    【讨论】:

      【解决方案3】:

      基本上,JTextField 没有实现ActionListener 接口,所以你不能做你正在尝试的事情。

      您需要提供有效的ActionListener 实现。

      详情请见How to write Action Listener

      【讨论】:

        【解决方案4】:

        请更正代码:

        textBox1.addActionListener(this);
        

        textBox1.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent ae){
             ....
           }
        }
        );
        

        【讨论】:

          猜你喜欢
          • 2016-08-23
          • 1970-01-01
          • 2016-10-29
          • 2012-06-06
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多