我的项目中有以下代码段。
someJFrame.addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent e) {
pane.resize(new Dimension(getSize().width/5, getSize().height/3));
pane.revalidate();
pane.repaint();
}
});
似乎在第一次初始化JFrame时就在刚开始时调用componentResized()方法,即使用户没有调整JFrame的大小,我也需要防止这种情况的发生。我只希望在真正的调整大小发生时而不是在JFrame初始化时调用componetResized()。
最佳答案
这是要走的路-
定义一个布尔标志以指示是否显示了该组件,默认为false
覆盖componentShown()并将此标志设置为true,当框架可见时调用此标志
在componentResized()中检查是否设置了componentShown标志,只有这样做
像这样的东西
private boolean componentShown = false; // instance variable
someJFrame.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
if(componentShown) {
System.out.println("Component RESIZED");
}
}
public void componentShown(ComponentEvent e) {
componentShown = true;
}
});