0

を利用するJava SwingダイアログがありますJXTreeTableJXTreeTable定期的に (たとえば、1 分に 1 回)にコンテンツを追加できるようにする必要があります。JXTreeTable別のクラスからアクセスするにはどうすればよいですか?

frame.JXTreeTable.contents = x私はExtendScript/JavaScriptに慣れすぎて、その内容を設定するようなことを言いたいですTreeTable。もちろん、Java ではこれほど簡単なことはありません。どうすればこれを達成できますか?

4

3 に答える 3

1

繰り返しますが、他の質問に対する私の回答と同様に、テーブルを変更するコードがどこにあるべきかを考える必要があります。

テーブルを変更するコードがダイアログ自体にない理由を自問してみてください。

たとえば、ダイアログがデータベースについて認識していない場合は、データベース接続をダイアログに渡して、データベース関連の機能自体を実行できるようにする必要があります。

繰り返しますが、窓を部屋と考えてください。あなたは書類の山を持って居間にいるかもしれませんが、それらの書類を置きたいテーブルはダイニングルームにあります. リビングルームの中からダイニングルームのテーブルに書類を置こうとしないでください。代わりに、紙を食堂に持って行き、そこのテーブルに置きます。

同様に、ダイアログのテーブルにデータを表示する場合は、データ セットをダイアログに渡すか、データベース接続をダイアログに渡し、データを検索してテーブルに入力します。

于 2014-03-23T23:49:38.153 に答える
0

達成したいことに応じて、いくつものオプションを利用できます...

あなたは出来る...

TreeModel更新の実行を担当するクラスに を渡します。

これは、他のクラスに提供したくない可能性のある へのアクセスを提供するため、少し厄介TreeModelです。これらのクラスは、ルートを変更しない、ノードを削除する、追加するなど、モデルに対して望ましくないことを突然実行できます。追加したくない場所へのノード...

また、ツリー構造についての一般的な知識も前提としています。たとえば、特定のサブツリー内でのみ更新を実行したい場合は、更新クラスがこれを暗黙的に認識する必要があります。

TreeModelまた、特に更新コードを再利用したい場合は、将来必要のない特定の状況にロックされる可能性があります...

あなたは出来る...

更新クラス内でオブザーバー パターンまたはプロデューサー/コンシューマー パターンを使用します。

基本的にこれは、更新クラスが単に「何かを実行」し、イベントをトリガーして、変更が発生したことを興味のある人に通知することを意味します。この概念は Swing 内でよく見られます。

これの利点は、コードの更新部分をモデルと UI から切り離して、コードをより柔軟にし、コードの他の部分に関する仮定を減らすことです。

これらの更新や変更にどのように対応するかを決定するのはオブザーバー/リスナー次第であり、コードを無限に柔軟にします。

これは、更新コードを変更できることを意味します (そして、オブザーバー インターフェイスが変更されない限り) 結果の結果に関心のある人には影響しません...

于 2014-01-13T22:07:49.390 に答える
-1

JXTreeTable を、それが含まれるクラス内のパブリック変数にする必要があります (AwesomeDialog としましょう)。次に、AwesomeDialog のインスタンスを介してドット表記 (例: dialog.table) でアクセスできます。

おそらくチェックアウトしてください: http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2014-01-13T20:31:20.047 に答える