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のサイズを変更していなくても、JFrameが初めて初期化されるときに最初にcomponentResized()メソッドを呼び出すようです-これが起こらないようにする必要があります。JFrame の初期化時ではなく、実際のサイズ変更が発生したときにのみ componetResized() が呼び出されるようにします。

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 に答える