在JFrame窗口中加入Jpanel 在Jpanel中加入ContainerListener监听器,为Jpanel内加入JButton,删除JButton,JButton的名字命名为自己的学号,姓名。
时间: 2024-02-01 08:13:42 浏览: 30
Java中的Listener监听器
以下是示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyPanel extends JPanel {
public MyPanel() {
this.setLayout(new FlowLayout());
// 添加按钮
JButton button = new JButton("添加按钮");
button.setName("1901234567_张三");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton newButton = new JButton("删除按钮");
newButton.setName("1901234567_张三");
add(newButton);
revalidate();
}
});
add(button);
// 监听容器事件
addContainerListener(new ContainerAdapter() {
@Override
public void componentRemoved(ContainerEvent e) {
Component component = e.getChild();
if (component instanceof JButton && component.getName().equals("1901234567_张三")) {
System.out.println("删除按钮:" + component.getName());
}
}
});
}
public static void main(String[] args) {
JFrame frame = new JFrame("MyPanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
MyPanel panel = new MyPanel();
frame.add(panel);
frame.setVisible(true);
}
}
```
在上面的代码中,我们创建了一个 `MyPanel` 类,继承自 `JPanel`,并在其构造函数中进行初始化。在 `MyPanel` 中,我们添加了一个按钮,并为其添加了一个监听器,当用户点击该按钮时,会在 `MyPanel` 中添加另外一个按钮,并重新布局。
同时,我们也为 `MyPanel` 添加了一个容器监听器 `ContainerListener`,当 `MyPanel` 中的组件被删除时,会触发 `componentRemoved` 方法,我们可以在该方法中判断是否为按钮,并且名字为指定的学号和姓名,如果是,则输出一行日志。
阅读全文