コンポーネントを削除および追加するJFrameがあり、これを行うたびに、それに応じてフレームのサイズを変更します。コンポーネント リスナーを追加しましたが、もちろん、ユーザーがウィンドウのサイズを変更することと、setSize() メソッドの両方によってトリガーされます。
ユーザーがウィンドウのサイズを変更したのか、それとも setSize() で変更したのかを ComponentEvent から確認する方法はありますか?
私が見つけた可能な解決策は次のとおり
です。1.フラグを使用します-ブール値のサイズ変更-setSize()の前にtrueに設定し、その後falseに設定します。
2. mouseDragged リスナーを追加し、ドラッグ前後のサイズを比較します。
2番目のものは間違いなく良い選択ではありません。最初のものは機能しますが、ユーザーがウィンドウのサイズを変更したかどうかを簡単な方法で見つけることができるかどうかを知りたいです。
8244 次
2 に答える
3
それに応じてフレームのサイズを変更します
pack() を使用することの何が問題になっていますか?
コンポーネントを削除したり追加したりしますが、これを行うたびに
次に、ブール値を設定する必要があります。
programResize == true:
panel.add(...);
frame.setSize(...); // this should cause the ComponentListener to fire
// the ComponentListener would then use programResize == false;
または、より良いオプション オプションは次のようになります。
component.removeComponentListener(...);
panel.add(...);
frame.setSize(...);
component.addComponentListener(...);
手動更新に基づくすべてのロジックが 1 つの場所に含まれており、ブール変数を定義する必要がないため、このアプローチの方が気に入っています。
于 2013-04-12T14:57:04.210 に答える