class

JButton actionPerformed in another class

假设我有一个 class 具有函数 Client.Function1() 的客户端。如何让我的 JButton 在 class LoginGUI 中让它在客户端 class 中执行 Function1?

我不想在 LoginGUI 中初始化客户端实例 class。

我将演示如何在单例中使用动作侦听器 class。

class Client implements ActionListener {
    private static Client instance = new Client();
    public static Client getInstance() { return instance; }

    public void actionPerformed(ActionEvent e) {
        // do the thing you want to do here.
    }
}

并且当您创建 JButton 时:

JButton b = new JButton();
// configure your button here...
b.addActionListener(Client.getInstance());

就这么简单

如果您还想在按下按钮时更改 UI 和内容怎么办?

只需添加另一个动作侦听器!

首先,在GUIclass中写一个方法,在UI按下按钮时写任何你想做的事情:

public void actionPerformed(ActionEvent e) {
    // do stuff
}

之后,使GUIclass实现ActionListener.

然后,再添加一个动作监听器:

b.addActionListener(this);