class中的JButton ActionListener 1,在class中调用ActionListener时做一些事情 2
JButton ActionListener in class 1, do something when ActionListener invoked in class 2
我有一个 JButtonClass,它在其构造函数中使用 ActionListener 扩展了 JButton。我还有一个包含 HashMap 的 HeadClass。所以,在HeadClass中使用了JButtonClass,这意味着我在创建JButtonClasses时不能给"HeadClass headClass"作为参数,对吧?如果我没记错的话,是关于依赖性和运行时错误的。所以我的问题是,当调用 JButtonClass 中的 ActionListener 时,如何调用 HeadClass 中的方法?
编辑:我无法知道此时按下了哪个按钮,这就是为什么我想添加需要 运行 每个 ActionListener 的 HeadClass 方法,这样无论如何按下 JButton,调用 HeadClass 中的相同方法。
我想你的思维方式可能会让人想起 C++。在 C++ 中,您不能将一个 class 放在另一个里面,等等,因为这会产生一个无限大小的结果。在 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());
}
我有一个 JButtonClass,它在其构造函数中使用 ActionListener 扩展了 JButton。我还有一个包含 HashMap 的 HeadClass。所以,在HeadClass中使用了JButtonClass,这意味着我在创建JButtonClasses时不能给"HeadClass headClass"作为参数,对吧?如果我没记错的话,是关于依赖性和运行时错误的。所以我的问题是,当调用 JButtonClass 中的 ActionListener 时,如何调用 HeadClass 中的方法?
编辑:我无法知道此时按下了哪个按钮,这就是为什么我想添加需要 运行 每个 ActionListener 的 HeadClass 方法,这样无论如何按下 JButton,调用 HeadClass 中的相同方法。
我想你的思维方式可能会让人想起 C++。在 C++ 中,您不能将一个 class 放在另一个里面,等等,因为这会产生一个无限大小的结果。在 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());
}