在JFrame窗口中加入一个panel然后加入一个JLabel控件,为panel加入ComponentListener,监听JLabel的大小变化,位置变化,是否显示,隐藏。
时间: 2023-11-09 14:04:15 浏览: 156
可以参考以下代码实现:
```java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class PanelTest extends JFrame {
private JPanel contentPane;
private JPanel panel;
private JLabel label;
public PanelTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(400, 300));
setTitle("Panel Test");
contentPane = new JPanel(new BorderLayout());
setContentPane(contentPane);
panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {
System.out.println("Panel shown");
}
@Override
public void componentResized(ComponentEvent e) {
System.out.println("Panel resized");
}
@Override
public void componentMoved(ComponentEvent e) {
System.out.println("Panel moved");
}
@Override
public void componentHidden(ComponentEvent e) {
System.out.println("Panel hidden");
}
});
label = new JLabel("Hello World");
panel.add(label);
contentPane.add(panel, BorderLayout.CENTER);
pack();
setVisible(true);
}
public static void main(String[] args) {
new PanelTest();
}
}
```
在以上代码中,我们创建了一个 `JFrame` 窗口,并在其中加入了一个 `JPanel`,并为其添加了一个 `ComponentListener` 监听器。在 `ComponentListener` 中,我们重写了四个方法,分别监听 `JPanel` 的大小变化、位置变化、是否显示和隐藏。同时,在 `JPanel` 中添加了一个 `JLabel` 控件。运行程序后,当我们改变 `JLabel` 的位置、大小,或者隐藏、显示时,就能在控制台看到对应的输出。
阅读全文