您好,我想了解创建链接两个不相关类的事件的最简单(或更少扭曲)的方法。
假设我有以下方案:(a-> b表示a包含b)
class ZeroThing extends JPanel container1
-> class FirstThing extends JPanel container1.1
-> JProgressBar bar
-> JButton but
-> class SecondThing extends JPanel container1.2
-> JLabel lab1
-> JLabel lab2
我希望每次按下按钮时都会自动将字母添加到lab2。
将事件链接到lab2的最简单方法是什么?
编辑:我想做什么:
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lab2.setText("Hello");
}
});
这是行不通的,因为它是FirstThing类中包含的JButton,而lab2是SecondThing类中包含的JLabel。如何绕过这种情况?
最佳答案
由于您询问了最简单的方法,因此这是在类之间实现紧密耦合的方法,因此非常难看:
在FirstThing
中创建一个公共方法SetLab2Text(...)
。
在SecondThing
中,创建一个类变量来保存对FirstThing
实例的引用:FirstThing ft = new FirstThing();
假定FirstThing
的默认构造函数只是初始化类变量,并且不实现任何GUI东西。
在ActionListener
中为but
添加ft.SetLab2Text("Hello");
同样,这只是完成任务的一种快速而肮脏的方式,并不代表一个好的设计。