0

如果我有一个 java 类并且我想使用另一个类的监听器,我该怎么做?例如,如果我有两个 JFrame 并且其中一个中有一个按钮,我可以让它在另一个类中做某事吗

4

1 回答 1

2

您可以在一个类中创建一个公共方法

public void addSomeButtonActionListener(ActionListener listener) {
    someButton.addActionListener(listener);
}

这将允许其他对象将侦听器添加到您感兴趣的按钮。请注意,如果一个按钮添加了多个侦听器,则无法保证哪个会首先触发或以任何触发顺序触发。

或者,您可以使用所有 Swing 组件固有的 PropertyListener 支持,创建您自己的绑定属性,并允许外部类将 PropertyChangeListeners 添加到感兴趣的类中,以侦听绑定属性的更改。有关这方面的更多信息,请查看本教程。请注意,如果您走这条路,并且如果您的类扩展了 Swing 组件,则无需编写自己的方法,addPropertyChangeListener(...)或者removePropertyChangeListener(...)因为这些方法以及 SwingPropertyChangeSupport 字段已经是所有 Swing 组件的固有组件。如果您的类没有扩展 Swing 组件,那么是的,您需要编写上述方法,但您仍然可以使用 GUI 类的关键组件之一的 SwingPropertyChangeSupport。

后一种解决方案是我喜欢的解决方案,但我发现我更经常听取模型的绑定属性而不是我的观点。

如果您需要更多详细信息,请告诉我们更多关于您的代码和问题的信息。

于 2012-04-22T13:23:45.413 回答