1

イベント ディスパッチ スレッドを適切に使用していないことが原因であると思われるレンダリングの問題が発生しているため、アプリケーションをリファクタリングする必要があります。物事を正しく行うために、私は情報を収集しようとします。私はすでにEDTに関するこのスレッドを開始しました: Swingでコンポーネントが実現されるのはいつですか?

パネルをネストする最良の方法についてもっと知りたいと思います。

私が次の構造を持っているとしましょう:

[パネルA [パネルB [パネルC]]]

よりパフォーマンスの高いもの (invalidate() への内部呼び出しが少ない)

順序 1 (最初に内側のコンポーネント、次に外側のコンポーネント):

PanelB.add(PanelC);
PanelA.add(PanelB);

順序 2 (最初に外側のコンポーネント、次に内側):

PanelA.add(PanelB);
PanelB.add(PanelC);

最もパフォーマンスの高い UI を取得する方法について、誰かがさらに情報/リンク/ヒントなどを持っている場合は、本当に感謝しています。ほとんどのチュートリアルは基本を説明するだけです。

関連する質問: すべての JComponents はコンテナであるため、JButton などのコンポーネントを追加することで、いくつかの JPanel を節約することを検討しています。これは良い習慣ですか:

JButton b=new JButton();
b.setLayout(new BorderLayout(),BorderLayout.Right);
b.add(new MyComponent());

コンポーネントがデフォルトで使用するレイアウトと、コンポーネントのレイアウトを変更したときに何が起こる可能性があるかを知るにはどうすればよいですか?

どうもありがとうございました。

4

1 に答える 1

2
  1. コンポーネントを追加する順序について心配する必要はありません。違いはユーザーにはわかりません。

  2. 一般に、UI のパフォーマンスについて心配する必要はありません。Swing コード自体は「十分に高速」です。UI から長時間実行される非 UI タスクを開始する場合にのみ、パフォーマンス/応答性が興味深いものになります。

  3. ボタンにパネルを追加すると、ユーザーが混乱します。コンポーネントのソース コードをチェックして、レイアウト マネージャーを確認できます (ただし、これが必要になることはほとんどありません)。

于 2013-01-08T15:03:25.937 に答える