为什么这段代码从不打印"Hello2“?
public class Test4 {
public static void main(String[] args) {
JFrame f = new JFrame();
JPanel p = new JPanel();
f.getContentPane().add(p);
JLabel x = new JLabel("Hello");
p.add(x);
p.addComponentListener(new ComponentListener() {
public void componentResized(ComponentEvent arg0) {
System.err.println("Hello1");
}
public void componentMoved(ComponentEvent arg0) {
}
public void componentShown(ComponentEvent arg0) {
System.err.println("Hello2");
}
public void componentHidden(ComponentEvent arg0) {
}
});
f.setVisible(true);
f.pack();
}
}发布于 2009-09-16 15:12:23
我猜它是在实际对象的可见性状态发生变化时调用的。在这种情况下,修改的是框架的可见性,而不是嵌板的可见性。(默认情况下,框架开始时是隐藏的,但面板是可见的)尝试将侦听器添加到框架。
发布于 2009-09-16 15:17:59
来自Java Tutorials
只有在调用组件的setVisible方法时,才会发生隐藏组件和显示组件的事件。例如,可以将窗口缩小为图标(图标化),而不触发隐藏组件的事件。
https://stackoverflow.com/questions/1433598
复制相似问题