3

私のプログラムではJPane、ゲームが進行するにつれてパネルにラベルが追加されますが、パネルを表示させる唯一の方法は、add(label)ラベルを削除するために再検証を使用することと、その逆を使用することです。

私の問題は、画面に40を超えるラベルが表示されるようになると、再検証で処理する必要があるものが多すぎるため、revalidate()追加された特定のコンポーネントのみを再検証するように、エーテルの動作をオーバーライドするにはどうすればよいかということです、画面上のすべてのコンポーネントではありません。メソッド内のどこかに、revalidate()すべてのコンポーネントのループを実行するループがあることは知っていますが、一生それを見つけることはできません。revalidate(component-here)orを呼び出しvalidate (component-here)て、その特定のコンポーネントのみを更新できるようにしたいと思います。

このプログラムを作成する他の方法があることは知っていますが、オーバーライドする方法にのみ興味がrevalidate()あるので、「この方法でコード全体をやり直しても、6時間ほどしかかからないはずです>.<」.

http://www.fileserve.com/file/jFdQ6nv/FINAL_PROJECT.zip私の eclipse プロジェクトへのリンク

4

1 に答える 1

1

このを試してみました。1000 個のテキスト領域を追加するのに 1 秒しかかからず、更新は瞬時に行われます。ラベルはさらに速くなります。あなたはそれを遅くする何か他のものを見たいと思うかもしれません.

また、あなたは見ることができますCellRendererPaneinvalidate()何もしないようにオーバーライドします。

public void invalidate() {}
于 2013-02-20T13:27:24.290 に答える