作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过这样做添加组件:
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/
我是一名优秀的程序员,十分优秀!