java GUI 两个类,一个为window类,主要实现窗口布局,另一个为windowListener,主要实现监听事件,如何再windowListener里实现对window中多个按钮的监听
时间: 2024-03-03 16:49:28 浏览: 85
java开发gui教程之jframe监听窗体大小变化事件和jframe创建窗体
5星 · 资源好评率100%
在WindowListener类中实现对Window类中多个按钮的监听,需要使用内部类或者匿名内部类的方式来实现ActionListener接口。具体步骤如下:
1. 在WindowListener类中定义一个内部类或匿名内部类来实现ActionListener接口,该类必须实现actionPerformed方法。
2. 在WindowListener类中定义一个方法,该方法用于将内部类或匿名内部类注册到Window类中的多个按钮上。
3. 在WindowListener类的构造方法中调用该方法,将内部类或匿名内部类注册到Window类中的多个按钮上。
以下是一个示例代码:
```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
// WindowListener类实现对Window类中多个按钮的监听
public class WindowListenerDemo extends JFrame implements WindowListener {
private JButton btn1, btn2;
public WindowListenerDemo() {
super("Window Listener Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
JPanel panel = new JPanel();
btn1 = new JButton("Button 1");
panel.add(btn1);
btn2 = new JButton("Button 2");
panel.add(btn2);
add(panel);
// 注册内部类或匿名内部类到多个按钮中
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button 1 clicked!");
}
});
btn2.addActionListener(new MyActionListener());
setVisible(true);
}
// 将内部类或匿名内部类注册到多个按钮中
private void registerEventHandlers() {
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Button 1 clicked!");
}
});
btn2.addActionListener(new MyActionListener());
}
// 内部类实现ActionListener接口
private class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Button 2 clicked!");
}
}
// 实现WindowListener接口中的方法
public void windowOpened(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public static void main(String[] args) {
new WindowListenerDemo().registerEventHandlers();
}
}
```
在该示例代码中,我们定义了一个WindowListenerDemo类,该类实现了WindowListener接口,并在构造方法中创建了两个按钮。使用匿名内部类和内部类的方式来实现ActionListener接口,并将其注册到Window类中的多个按钮上。在registerEventHandlers方法中将内部类或匿名内部类注册到多个按钮中。在main方法中创建了WindowListenerDemo类的实例,并调用registerEventHandlers方法来注册内部类或匿名内部类到多个按钮中。
阅读全文