2016-11-30 10 views
0

私はJSplitPaneを持つSwingアプリケーションを持っていますが、ウィンドウが最大化または復元されるとすぐにJSplitPaneの幅を取得したいと考えています。しかし、私は正しい値を得ることができない、それは常にJSplitPaneの前の幅を返します。ウィンドウの状態が変更された後の幅ではありません。Swing windowStateChangedリスナーはコンポーネントの以前のプロパティ値を返します

私はevt.getNewState()をNORMALとMAXIMIZED_BOTHに使用して検証する必要があることを知っていますが、ここでは関係ありません。最大場合1120復元され、場合

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

これは1812を出力します。私は他のいくつかのコンポーネントでこれを試してみて、同じ結果を得ました。どうすればこの問題を克服できますか?

答えて

1

addComponentListener()を使用し、JFramecomponentResizedイベントを処理することで、この問題に対する独自の解決方法が見つかりました。このイベントではすべてのサブコンポーネントが更新されるため、新しい幅を取得してタスクを実行することができました。まだ完璧ではないが十分に近い。詳細については、How to Write a Component Listenerを参照してください。

関連する問題