我想通过这样做来添加组件:
frame.add(new JButton("Click here"));
的
但是我如何添加一个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()中而进行代码简化。
有没有办法做到这一点?
由于
答案 0 :(得分:3)
三个选项:
选项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);
}
});