gpt4 book ai didi

java - 如何在将 JComponent 实例化添加到 JContainer 时添加 ActionListener?

转载 作者:行者123 更新时间:2023-12-01 19:57:22 26 4
gpt4 key购买 nike

我想通过这样做添加组件:

frame.add(new JButton("点击此处"));

但是我该如何添加一个 ActionListener 呢?我认为这可能与 AbstractButton 实例化有关?

我不想实例化 JButton 变量,因此我不确定这是否是正确的方法:

    frame.add(new JButton("Click here"), new AbstractButton() {
public void addActionListener(ActionListener l) {
// do stuff
}
});

如果这有效,我需要将其添加到 actionPerformed() 中,如下所示:

JButton button = new JButton("Click here");
button.addActionListener(this);

请注意,我并不是尝试为 ActionListener 执行匿名内部类,而只是将组件添加到 actionPerformed() 的代码简化。

有什么办法可以做到这一点吗?

谢谢

最佳答案

三个选项:

选项 1:我认为最干净

    JFrame frame = new JFrame();

JButton button = new JButton("Click Here");
frame.add(button);
button.addActionListener(this);

选项 2 匿名类

    JFrame frame = new JFrame();

JButton button = new JButton("Click Here");
frame.add(button);

button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Clicked");
}
});

选项 3

这是不推荐的,丑陋的并且有意想不到的副作用(想象一下再次调用add)。但您要求一种直接在添加内部执行此操作的方法。

    JFrame frame = new JFrame();

JButton button = new JButton("Click Here");
frame.add(new JButton("Click Here"){
@Override
public void addActionListener(ActionListener l) {
super.addActionListener(YourClass.this);
}
});

关于java - 如何在将 JComponent 实例化添加到 JContainer 时添加 ActionListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49108519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com