我的项目中有以下代码段。
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 的大小 - 我需要防止这种情况发生。我只希望在真正调整大小时调用 componetResized(),而不是在 JFrame 初始化时调用。
最佳答案
这是要走的路-
- 定义一个 boolean 标志来指示组件是否显示,默认为 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;
}
});
关于java JFrame 调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15562133/