我有一个JButtonClass,它在构造函数中用ActionListener扩展了JButton。我还有一个包含HashMap的HeadClass。因此,在HeadClass中使用了JButtonClass,这意味着我不能在创建JButtonClasses时将"HeadClass headClass“作为参数,对吧?如果我没记错的话,是关于依赖和运行时错误的。所以我的问题是,当HeadClass中的ActionListener被调用时,我如何调用JButtonClass中的方法呢?
编辑:我现在无法知道哪个按钮被按下了,这就是为什么我想在每个ActionListener中添加需要运行的HeadClass方法,这样无论按下什么JButton,都会调用HeadClass中的相同方法。
发布于 2018-06-04 04:18:28
我认为你的心态可能会让人想起C++。在C++中,您不能将一个类放在另一个类中,以此类推,因为这将创建一个无限大小的结果。在Java中,因为一切都是指针,所以这很好:
class JButtonClass extends JButton {
JButtonClass(HeadClass headClass) {
headClass.jbtn = this;
this.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
headClass.someFunction();
}
});
}
}
class HeadClass {
HashMap hashMap;
JButtonClass jbtn;
void someFunction() {
// do stuff with jbtn
}
}
public static main(String[] args) {
new JButtonClass(new HeadClass());
}
https://stackoverflow.com/questions/50670530
复制相似问题