0

JSplitPane を使用する Swing アプリケーションがあり、ウィンドウが最大化または復元されたらすぐに JSplitPane の幅を取得したいと考えています。しかし、正しい値を取得できないようです。常に JSplitPane の以前の幅を返します。ウィンドウの状態が変更された後の幅ではありません。

NORMAL と MAXIMIZED_BOTHを使用して検証する必要があることはわかっていますが、evt.getNewState()ここでは問題ありません。

addWindowStateListener(new java.awt.event.WindowStateListener() {
    public void windowStateChanged(java.awt.event.WindowEvent evt) {
       System.out.println(jsp.getWidth());
    }
});

これは1812、復元され、1120最大化された場合に出力されます。他のいくつかのコンポーネントでもこれを試しましたが、同じ結果になりました。どうすればこの問題を克服できますか?

4

1 に答える 1

1

のイベントを使用addComponentListener()して処理することで、この問題に対する独自の解決策を見つけました。このイベントではすべてのサブコンポーネントが更新されるため、新しい幅を取得してタスクを実行できました。まだ完全ではありませんが、十分に近いです。詳細については、コンポーネント リスナーの作成方法を参照してください。componentResizedJFrame

于 2016-12-01T01:33:52.237 に答える