3

repaint()フレームを最大化またはサイズ変更した直後にフレームを強制するにはどうすればよいですか?

その特定の操作が行われるときにどのメソッドが呼び出されるのかわかりません。ペイントでグラフィックオブジェクトを使用して記述されたグラフィックがたくさんあり、その方向はからのリアルタイムフィードバックに依存しますが、最大化しgetWidth()getHeight()もペイントは呼び出されず、残念ながらそれらのピクセルが変更された場合にのみ呼び出されます。

4

2 に答える 2

15

ComponentListener を登録します。

final Component myComponent = makeTheFrameOrWhatever();
myComponent.addComponentListener(new ComponentAdapter() {
    @Override
    public void componentResized(ComponentEvent e)
    {
        myComponent.repaint();
    }
});
于 2009-10-14T23:08:46.280 に答える
1

repaint() と paint()は、フレームのサイズを変更するときに最も確実に呼び出されるため、さらに掘り下げる必要があります。これは、フレームがコンテンツをペイントできる唯一の方法です。おそらく、ウィンドウを大きくしても、使用している特定のレイアウトが影響を受けないため、再描画がフレーム内の特定のコンポーネントに到達していない可能性があります。または、レイアウトがない場合は、Frame をサブクラス化し、サブコンポーネントでペイントを明示的に呼び出す必要があります。これを行うレイアウト マネージャーがないためです。

マウス ボタンを放した後に 1 回だけではなく、サイズ変更に繰り返しペイントするかどうかは、オペレーティング システムのオプションであることに注意してください。

于 2009-10-14T23:24:10.523 に答える