0

我的项目中有以下代码段。

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 初始化时调用。

4

1 回答 1

1

这是要走的路-

  1. 定义一个布尔标志来指示组件是否显示,默认为 false
  2. 覆盖 componentShown() 并将此标志设置为 true,当框架可见时调用此标志
  3. 在 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;
        }
    });
于 2013-03-22T07:50:06.000 回答