2011-03-12 37 views
3

私はかなり新しいです。 Java SwingCardLayoutを私のアプリケーションに使用しています。このアプリでは、ユーザはアクティビティを作成し、他のJPanelでは既存のアクティビティを表示できます。Java Swing - CardLayout、実行中にカードを更新する方法は?

ラベルのあるカードの更新中に問題が発生しました。アクティビティを追加すると、アプリを再起動すると正常に動作します。私は再起動を必要としない方法を探しています。

要するに、新しいラベルデータが表示されるように、実行中にパネルを再構築/更新する方法を知りたいと思います。

ありがとうございます!

+0

あなたはEventDispatchThreadでの活動を追加しますSwingUtilities.invokeLater(...)? – u449355

+0

いいえ、実際に更新する方法は実装されていません。あなたの方法はわかりません。 – belens

答えて

9

あなたはレイアウトマネージャを起動することができるように、コンポーネントが追加されたGUIを伝える必要があります目に見えるGUIにコンポーネントを追加します。

panel.add(component); 
panel.revalidate(); 
+0

あなたの回答は私の問題を解決しました!!ありがとうXD私はこれで苦労してきた – belens

+0

私は従業員の情報を挿入する1つのパネルがあります。両方ともカードレイアウトの従業員リストを表示する別のパネル。新しい従業員を挿入して従業員リストを表示する次のパネルを表示した後で、従業員リストは更新しません。なにか提案を? –

0

あなたが探しているように聞こえるのはオブザーバーのデザインパターンです。

基本的には、すべてのパネルを追加するObserverインスタンスが1つあります。パネル内の値を更新すると、オブザーバーが変更されたことはありません。 Observerは、観測されたすべてのパネルに値が変更されたことを通知し、値を更新します。

http://en.wikipedia.org/wiki/Observer_pattern

関連する問題