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

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;
        }
    });

10-08 20:13