gpt4 book ai didi

java - 当 Java Swing Action Listener 类扩展另一个类时,避免无限循环

转载 作者:行者123 更新时间:2023-12-02 11:15:34 25 4
gpt4 key购买 nike

我已将 ActionListener 附加到 Swing 中的 JButton

主类:

 class MainClass {

String foo;
JButton button = new JButton("cool button");

public MainClass(String foo) {
this.foo = foo;
...
JFrame setup here
...

button.addActionListener(new MyBtnListener(frame));
System.out.println(getFoo());
}

public String getFoo() {
return this.foo;
}

}

实现 ActionListener 方法的类:

class MyBtnListener extends MainClass implements ActionListener  {

private JFrame target;

public MyBtnListener(JFrame target) {
this.target = target;
}

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("button clicked");
//target.dispose();
}

}

编译后,代码结果如下:foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo(无限循环)。我需要 ActionListener 类能够访问 MainClass 中的方法,同时不重复调用构造函数。我怎样才能实现这个目标?

最佳答案

您的问题的答案非常简单:您搜索的内容称为“引用”。

只需将 MainClass 类型的私有(private)字段添加到监听器并在构造函数中初始化它:

private final JFrame frame;
private final MainClass reference;

public MyBtnListener(final JFrame frame, final MainClass reference)
{
this.frame = frame;
this.reference = reference;
}

然后您可以像这样调用 getFoo 方法:

final String foo = reference.getFoo();

同样非常重要的是,MyBtnListener扩展 MainClass 类。

关于java - 当 Java Swing Action Listener 类扩展另一个类时,避免无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308644/

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