1

Swing を使用しているレガシー アプリケーションを使用していますが、ユーザーがボタンをクリックしたときに画面がどのように変化するかを理解するのに苦労しています。これを理解できない理由の 1 つは、Swing を初めて使用するためです。私は本を​​読んで基本を理解しましたが、まだ苦労しています。

基本的に、私が見ている画面には、左側に多数のショートカット ボタンがあり、右側に空のペインがある JSplitPane があります。ボタンをクリックすると、押されたボタンに応じて右側のペインに異なる画面が表示されます。

コードを調べてみると、押されたボタンに応じて setVisible() メソッドを呼び出すものがあると期待していました。

各ショートカット ボタンの actionPerformed メソッドは次のようになります。

void shortCutBtn_actionPerformed(ActionEvent e) {
   propertyChangeListeners.firePropertyChange("selectedShortCut", previousShortCutSel, currentShortCutSel);
   mainPanel.updateUI();
  }

ほとんどのコードを調べたところ、上記のコードがフレーム切り替えの原因であるという結論に達しましたが、それがどのように起こっているのかわかりません。

各画面は、数値定数によって識別されます。上記のコード例では、previousShortCutSel と previousShortCutSel は、個々の画面 screen を表す数値を参照しています。

updateUI() がどのように機能するかのドキュメントを探してみましたが、わかりません。上記により、JSplitPanel の右側のパネルのコンテンツが新しい画面で更新されるのはどのようになりますか?

4

2 に答える 2

9

updateUI()これは、「UI プロパティを現在のルック アンド フィールの値にリセットする」の適切な使用方法ではありません。例自体は信頼できない場合があるため、別の例を検討することを検討してください。GoogleOlympiadたとえば、(キャッシュされた) 画像を使用してラベルのアイコンを設定します。

ImageIcon image = getImage(index);
imageLabel.setIcon(image);

画像
(出典:sites.google.comのdrjohnbmatthews

于 2012-10-14T18:45:38.307 に答える
3

ジギーのコメントによると(役に立ってよかった)

PropertyChangeListenerコードに追加されているように見える を見てください。特にpropertyChange(PropertyChangeEvent e)メソッドは、コンテンツを変更するコードが存在する場所です。

いつものようにtrashgodの良い例/アドバイスへの+1

于 2012-10-14T20:57:41.440 に答える