5

私はJavaグラフィックスクラスを少し遊んでいて、疑問に思っていました。メソッドを呼び出す必要があるのはrepaint()いつですか。コメントアウトしてみましたが、出力GUIには影響しなかったようです。しかし、私が読んだJavaGUIコードで多く使用されているのを見てきました。いつ使用するか、いつ使用しないかを説明してもらえますか?

4

4 に答える 4

1

repaint()ビュー (コンポーネント) を更新するため、コンポーネントに変更を加えるたびに呼び出す必要があります。たとえば、グラフィカル コンポーネントを回転する場合repaint()、含まれているコンポーネントの変更を確認するには、 を呼び出す必要があります。

于 2012-06-01T15:20:37.203 に答える
1

ほとんどの swing アプリケーションでは、(ボタンのテキスト値の変更やリスト ボックスへのデータの追加などの一般的な操作のために) 自動的に処理されるため、実際に必要になることはありません。

通常、何らかの変更を行った場合にのみ、swing が自動的に反映されません。たとえば、レイアウト マネージャーを使用しておらず、コンポーネントのサイズを手動で変更している場合です (通常、レイアウト マネージャーは必要に応じてコンポーネントを再描画するため)。 .

于 2012-06-01T15:16:10.610 に答える
0

私が考えることができる唯一のもの:

    new Thread() {
    @Override
    public void run() {
    while (ClassName.this.isVisible()) {
        ClassName.this.updateStatusLabel();
        ClassName.this.validate();
        ClassName.this.repaint(50L);
        try {
        Thread.sleep(1000);
        } catch (final InterruptedException e) {
        Log.log(e);
        }
    }
    }
}.start();

JDialog のコンストラクターに上記のコードがあるとします。updateStatusLabelが行うことは、パブリックまたはメソッドを介して設定可能なブール変数をチェックし、ベースの JLabel のアイコンをそのようなブール値に設定することです。GUI を検証して再描画しない場合、別のイベント (おそらくユーザーがトリガーしたイベント) がスローされるまで、変更は表示されません。また、ユーザーがラベルに特定のアイコンが表示されるのを待っている場合、たとえば、インターネット経由でデバイスに到達できるかどうかが示されているため、ユーザーは対話しません (または、少なくとも対話を遅らせています)。そんなに)。

于 2013-03-16T09:43:34.273 に答える
0

アプリケーションを起動すると、GUI が「ペイント」されます。

repaint()内部で何かを変更したために GUI を再描画したい場合は、呼び出す必要があります。

ボタンを削除する場合は、削除する (または非表示にする) 必要があり、その後、GUI を呼び出すvalidate()repaint()、再計算 (再描画) する必要があります。

于 2012-06-01T15:18:40.610 に答える