我需要一些指导,了解ActionListener和actionPerformed(ActionEvent)的工作原理

时间:2013-04-19 18:18:49

标签: java swing jbutton actionlistener

我自学了Java的摇摆组件,并遇到了一些概念障碍。我确信我的某些特定术语是错误的,但希望我能够很好地沟通我的困难以获得一两个答案。

我有以下代码,为简洁起见:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//
public class CreateButtonSel {
    public static void main(String[] args) {
        ButtonSel thisButtonSel = new ButtonSel();
        final int WIDTH = 250;
        final int HEIGHT = 250;
        thisButtonSel.setSize(WIDTH,HEIGHT);
        thisButtonSel.setVisible(true);
    }
}

当我添加implements ActionListener时(下面已注释),我收到错误ButtonSel is not abstract and does not override abstract method actionPerformed(ActionEvent)。根据我在javadocs和各种网站上阅读的内容,我收集到的错误是由于尚未在方法中定义了操作。像

这样的东西
public void actionPerformed(ActionEvent clickButton) {
     do stuff;
     {

但是,我不清楚这种方法需要居住的地方。我认为它与构造函数一起存在于ButtonSel类中 - 因为那是我定义按钮对象的地方。但是,我也可以将其视为CreateButtonSel类中的方法,并作为参数传递给ButtonSel。然后,问题是如何将这些按钮动作特征传递给构造函数?或者它们会自动附加到构造函数创建的按钮对象上,如果它们位于CreateButtonSel类中吗?

有人可以解释程序流程应该如何工作以及什么时候调用哪种方法?

//    public class ButtonSel extends JFrame implements ActionListener {
public class ButtonSel extends JFrame {
    JButton approveButton = new JButton("Go");
    JPanel buttonPanel = new JPanel();
 //
    public ButtonSel() {
        super("ButtonTest");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        add(approveButton);
    }
}

1 个答案:

答案 0 :(得分:3)

有关示例,请参阅How to Write an ActionListener。您还可以在论坛中搜索其他工作示例。