您好,我想了解创建链接两个不相关类的事件的最简单(或更少扭曲)的方法。

假设我有以下方案:(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");


同样,这只是完成任务的一种快速而肮脏的方式,并不代表一个好的设计。

09-12 12:18