gpt4 book ai didi

Java Action 监听器

转载 作者:搜寻专家 更新时间:2023-11-01 01:53:49 25 4
gpt4 key购买 nike

我打算用 Java 开发一个游戏,它会有很多监听器( Action 、键、鼠标等)。

我的问题是实现监听器的最佳方式是什么。

方法一:

this.addActionListener(new ActionListener() {
// Overide methods go here
});

方法二:

创建一个新类(或多个类),它将实现 ActionListener 并具有用于不同游戏组件(按钮、移动、任何其他需要 ActionListener 的方法)的方法

所以,例如。如果我正在制作一个按钮,这样做会更好吗

JButton button = new JButton();
button.addActionListener(new ActionListener() {

});

JButton button = new JButton();
button.addActionListener(new MyActionListener());

// MyActionListener
class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
Object objectPressed = e.getSource();
if(objectPressed.equals(button) {
System.out.println("Hello World");
}
}
}

我可以看到两种方式的优点,方法 1 可以直接看到该对象发生了什么,但是方法 2 可以看到所有组件。

那么在开发大型应用程序时,将所有监听器放在单独的类中还是使用方法 1 更易于维护?

最佳答案

就我个人而言,我更喜欢多个 Listener,而不是一个带有“if”检查的 Listener。它允许我独立修改它们。

我会将该代码嵌入到 UI 中。我会将它们编写为单独的类,并使用构造函数或 DI 工厂将它们作为依赖项注入(inject)。

构造函数注入(inject):

public class YourPanel extends JPanel {
private JButton button;

public YourPanel(ActionListener buttonListener) {
this.button = new JButton("Do It");
this.button.addActionListener(buttonListener);
}
}

关于Java Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878385/

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