继承人我想做什么,其中一个类是包含所有JButton的JFrame,我想要另一个类来监听在JFrame类上进行的操作。 请参阅以下代码:
public class Frame extends JFrame{
//all the jcomponents in here
}
public class listener implements ActionListener{
//listen to the actions made by the Frame class
}
感谢您的时间。
答案 0 :(得分:5)
只需将侦听器的新实例添加到您想要侦听的任何组件即可。任何实现ActionListener
的类都可以作为侦听器添加到组件中。
public class Frame extends JFrame {
JButton testButton;
public Frame() {
testButton = new JButton();
testButton.addActionListener(new listener());
this.add(testButton);
}
}
答案 1 :(得分:3)
1。您可以使用Inner Class
或Anonymous Inner Class
来解决此问题....
<强>例如强>
内部班级
public class Test{
Button b = new Button();
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
// Do whatever you want to do on the button click.
}
}
}
<强>例如强>
匿名内部课程
public class Test{
Button b = new Button();
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// Do whatever you want to do on the button click.
}
});
}
答案 2 :(得分:1)
如果您希望同一个listener
实例监听框架中的所有按钮,则必须使actionPerformed方法根据命令收集所有点击和委托:
public class listener extends ActionListener{
public void actionPerformed(ActionEvent e){
String command = e.getActionCommand();
if (command.equals("foo")) {
handleFoo(e);
} else if (command.equals("bar")) {
handleBar(e);
}
}
private void handleFoo(ActionEvent e) {...}
private void handleBar(ActionEvent e) {...}
}
这将在Java 7中变得更容易,您可以在其中切换字符串!
单击按钮的ActionCommand将是Text
的{{1}} - 属性,除非您另外设置