3

JPanel (JPanel の複数のレイヤーに配置されている) 内に画像を表示する必要があり、JPanel の幅に合わせて画像のサイズを変更したいと考えています。Image を JPanel に追加すると、JPanel の getWidth() が画面の幅と等しくなるため、画像は画面の幅に合わせてサイズ変更されます。しかし、JPanel がその親 JPanel に追加された後、幅が変更されたため、JPanel の幅に対して画像が大きすぎます。

JPanelがレイアウトされた後にのみ画像のサイズを変更して追加したいので、パネルの適切な幅を取得し、それに応じて画像のサイズを変更できます。

どうすればこれを達成できますか? afterLayout() のようなイベントはありますか?

4

2 に答える 2

2

はい、ComponentListenerを使用してそれを行うことができます。LayoutManager は、コンポーネントのレイアウト中に setSize メソッドを呼び出す必要があるため、そのような変更について通知を受けることができるはずです。

あなたが探している方法は次のとおりです。

void componentResized(ComponentEvent e){}

したがって、 ComponentListener インターフェイスを実装し、addComponentListener()メソッドを介して目的のコンポーネントに追加します。

JPanel panel;
...
panel.addComponentListener(new YourClassImplementingComponentListener());
于 2012-08-15T10:49:19.417 に答える
-1

メソッドを使用ComponentListenerして聞くComponentResized。その中で、パネルのサイズに応じて画像のサイズを変更するロジックを記述します。パネルのサイズが変更されると、それに応じて画像のサイズも変更されます。

于 2012-08-15T12:00:34.563 に答える