gpt4 book ai didi

java - 如何在另一个类中使用ActionListener

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

我正在清理我的代码。我读到我把 ActionListener 放在另一个类中会更好。这就是我所做的。

但是在我的 ActionListener 中,一切正常,除了代码中的某个时刻,我得到了 setSize(xx,xx)。我以前工作过,因为是同一个类。但现在不再了。我尝试了多种解决方案,但无法解决。

Action 监听器:

public class ActionFrame implements ActionListener{

public void actionPerformed(ActionEvent e){
Object src = e.getSource();

if(src == Frame.Console_Bouton){
System.out.println("Bouton console");
if(getSize().getWidth() >= 750){
/** If True (Retirer) */
for(int i = 1090; i > 689; i--){
setSize(i, 490);
System.out.println("Rétractation du Frame");
}
}else{
/** If False (Etirer) */
for(int i = 689; i < 1090; i++){
setSize(i, 490);
System.out.println("Etirage du Frame");
}
}

}

...

至于错误,没有,它只会卡住程序。

最佳答案

猜测:在这种情况下,提取 ActionListener 可能不是一个好主意,因为它使用对象的 private 方法.

具有通用/可重用功能的类应该独立存在。只要它们用于特定用途,将它们尽可能靠近使用位置就不是坏习惯(根本!)。我可以想象您的 setSize 方法不是您的类公共(public)接口(interface)的一部分,因此 ActionListener 只是将事件耦合到您的特定类的“粘合剂”。

在这种情况下,您将创建一条“微小”胶水线:

abstract class ActionAdapter implements ActionListener {
}
...
frame.Console_Bouton.addActionListener(
new ActionAdapter(){ // anonymous inner class
void actionPerformed(ActionEvent e){
... // (no need to check source!)
}
});

关于java - 如何在另一个类中使用ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743652/

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