gpt4 book ai didi

java - ActionListener原理

转载 作者:行者123 更新时间:2023-12-02 04:54:16 24 4
gpt4 key购买 nike

我正在尝试找到向 JButton 或其他组件添加操作的基本原则。这就是我正在做的事情以及我得到的结果。

我创建了一个名为:Ali 的类,其中有一个 main 方法,在 main 方法内实例化另一个名为:MainFrame 的方法以及我在此处放置的任何组件。

我在这里创建了一个简单的按钮,使用 ActionListener 接口(interface)注册了它,并为此编写了一个 actionPerformed() 方法。非常简单和容易。但是,不知怎的,这个程序给了我一个错误。这是简化的代码和错误。

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Ali{

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
JFrame frame = new MainFrameAli2("MainFrameAli2");
frame.setSize(400,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);
}
});
}
}

这是 MainFrameAli2

public class MainFrameAli2 extends JFrame implements ActionListener {

public MainFrameAli2(String title){
super(title);

// set layout manager
setLayout(new BorderLayout());

// create swing component
JTextArea textArea = new JTextArea();
JButton button = new JButton("click");

// add swing components to content pane
Container c = getContentPane();
c.add(textArea, BorderLayout.NORTH);
c.add(button, BorderLayout.SOUTH);

// add behavior
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
System.out.println("Clicked");
}
});
}
}

现在的问题是代码没有运行,这是错误:

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: 
The public type MainFrameAli2 must be defined in its own file
The type MainFrameAli2 must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)

而且,如果我编写如下代码,一切正常。

        // add behavior
button.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
System.out.println("hooyt");
}
}

为什么它在第一种情况下不起作用而在第二种情况下起作用?

最佳答案

so, why it is not working in the first case and working in second case.?

就像编译器消息所说的那样,在第一个示例中,您没有在 MainFrameAli2 类中实现 ActionListener 接口(interface)。

您创建了一个实现 ActionListener 接口(interface)的匿名内部类。这与让您的类实现接口(interface)不同。

在第二个示例中,您的类确实实现了 ActionListener。

如果你可以做第一个例子:

//public class MainFrameAli2 extends JFrame implements ActionListener {
public class MainFrameAli2 extends JFrame {

关于java - ActionListener原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28928564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com