如果我有一个java类,并且我想使用另一个类的监听器,我该怎么做?例如,如果我有两个JFrame并且其中一个中有一个按钮,我可以让它在另一个类中执行某些操作
答案 0 :(得分:2)
您可以在一个类中创建一个公共方法
public void addSomeButtonActionListener(ActionListener listener) {
someButton.addActionListener(listener);
}
这将允许其他对象将侦听器添加到您感兴趣的按钮。请注意,如果一个按钮添加了多个聆听者,则无法保证哪一个将首先发射或以任何发射顺序发射。
或者,您可以使用所有Swing组件固有的PropertyListener支持,创建自己的绑定属性,并允许外部类将PropertyChangeListeners添加到感兴趣的类,并侦听绑定属性的更改。有关详情,请查看this tutorial。注意,如果你走这条路,如果你的类扩展了Swing组件,那么就不需要编写自己的addPropertyChangeListener(...)
或removePropertyChangeListener(...)
,因为这些方法以及SwingPropertyChangeSupport字段已经是一个内在的所有Swing组件的组件。如果你的类没有扩展Swing组件,那么是的,你需要编写上面的方法,但你仍然可以使用你的一个GUI类的关键组件的SwingPropertyChangeSupport。
后一种解决方案是我喜欢的解决方案,但我发现我经常听取模型的绑定属性而不是我的观点。
如果您需要更多详细信息,请告诉我们有关您的代码和问题的更多信息。