java如何在另一个类中使用ActionListener
我正在清理我的代码。我读到我把ActionListener
放在另一个类中更好。我就是这么做的
但是在我的ActionListener
中,除了代码中的某个点之外,所有东西都可以工作,我得到了一个setSize(xx,xx)
。我以前工作过,因为它在同一个班。但现在不是了。我尝试了多种解决方案,但都没能解决
ActionListener
:
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");
}
}
}
...
至于错误,没有,它只会冻结程序
# 1 楼答案
一个很好的方法是使用回调机制
我在这里发布了一个同样的答案
--编辑--
从
ActionEvent
获取源,然后找到它的父级(如果需要,获取父级的父级,直到获得需要重新调整大小的所需组件),并对其调用setSize()
# 2 楼答案
创建一个新类,如下所示:
# 3 楼答案
在控制器中创建视图的实例
将
setSize(xx,yy)
方法的访问修饰符从private
更改为public
将
actionPerformed()
中的setSize
替换为view.setSize(xx,yy)
# 4 楼答案
猜测:可能在这种情况下,提取
ActionListener
不是一个好主意,因为它使用对象的private
方法具有通用/可重用功能的类应该独立存在。只要它们是针对特定用途的,这就不是一个坏习惯(一点也不!)把它们放在离使用它们的地方尽可能近的地方。我可以想象
setSize
方法不是类的公共接口的一部分,因此ActionListener
只是将事件耦合到特定类的“粘合剂”在这种情况下,你可以创建一条“微小”的胶水线: