我有一个JButtonClass,它在其构造函数中使用ActionListener扩展JButton。我还有一个包含HashMap的HeadClass。因此,JButtonClass用于HeadClass,这意味着我无法提供" HeadClass headClass"当我创建JButtonClasses时作为参数,对吧?如果我没记错的话,关于依赖性和运行时错误的东西。所以我的问题是,当调用JButtonClass中的ActionListener时,如何调用HeadClass中的方法?
编辑:我无法知道此刻按下了哪个按钮,这就是为什么我想添加需要运行到每个ActionListener的HeadClass方法,这样无论JButton被按下什么,调用HeadClass中的相同方法。答案 0 :(得分:0)
我认为你的心态可能会让人联想到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());
}