我有两个班,A和B。
A类有一个JTextField,和B类的一个私有变量。B类实现了ActionListener。
A 类和 B 类位于不同的文件中。我可以通过 ActionListener 从 B 类访问 JTextField,还是有办法(要求我不能在 A 中包含 B 类)我可以做到吗?我一直在寻找,但我还没有找到解决方案。
谢谢你的时间 :)
我有两个班,A和B。
A类有一个JTextField,和B类的一个私有变量。B类实现了ActionListener。
A 类和 B 类位于不同的文件中。我可以通过 ActionListener 从 B 类访问 JTextField,还是有办法(要求我不能在 A 中包含 B 类)我可以做到吗?我一直在寻找,但我还没有找到解决方案。
谢谢你的时间 :)
在 B 类的 actionPerfored 方法中,您可以通过 ActionEvent 参数访问事件的来源:
public void actionPerformed(ActionEvent e){
JTextField field = (JTextField)e.getSource();//Now should represent the JTextField in class A
}
然后,您可以对 JTextField 执行操作。在将 B 类用作其他组件的 ActionListener 时,我会保持警惕,因为如果源不是 JTextField,这会引发异常。
您可以使用 event.getSource 来访问您的组件,
public void actionPerformed(ActionEvent evt)
{
JTextField registeredComponent = (JTextField)evt.getSource();
// dangerous cast required
}
或者,如果您必须从侦听器访问不同的组件类型,您可以编写自定义的观察者模式实现。
例如,一个定制的 EventObject 实现,它包括一个通用类型的源组件。
public void actionPerformed(CustomEvent customEvt)
{
T registeredComponent = customEvt.getSource(); //generic getSource
}