2009-07-21 7 views
0

私は1つのクラスでJTableを作成しましたが、同じテーブルを使用して別のクラスに値を設定する必要があります。私はどのように別のクラスで同じJTableを使用しますか?伝えてください。別のクラスのテーブルを使用

答えて

0

値を設定し、他のすべてのクラスからこのメソッドを呼び出すJTableを囲むクラスにパブリックメソッドを追加します。

0

JTableを含むクラスは、このフィールドを何らかの形で公開する必要があります。あるいは、が好ましくはである場合、クラスは、JTableの値を変更するメソッドを提供できます。

class A { 
    private JTable myJTable; 

    public JTable getMyJTable() { 
     return myJTable; 
    } 

    public void setMyJTableValue(Object value) { 
     // set the value accordingly 
    } 
} 

class B { 

    private A a; 

    public void methodWithAccessToA() { 
     // business logic ... 
     a.setMyJTableValue(myBusinessValue); 
     // ... 
     a.getMyJTable().setValue(myBusinessValue); 
    } 

} 
+0

これを控えめにした人が私に理由を与えることはできますか? –

+0

私はしませんでしたが、JTableを公開するのは悪い考えです。カプセル化など: – willcodejavaforfood

+0

私はまた、 "代わりに、そして好ましくは、クラスがJTableの値を変更するメソッドを提供することができ、getJTable()またはgetJTableModel()に行くときにカプセル化が必要であると言いました。 –

2

あなたが唯一の基礎となるTableModelに、実際のテーブルへのアクセス権を持っている第二のクラスは必要ありません:クラスは、(直接、またはしない)JTableを含むクラスを参照する必要があります。これは、多くの方法で達成することができます。

  • 秒はどちらのクラスがその設定されているモデルへの参照を保持モデル
  • への参照を取得するために使用できる最初のクラスのパブリックメソッドgetTableModel()インスタンスが作成される
  • fistクラスのpublicメソッドaddValue()は、値を受け取り、モデル自体を公開せずにテーブルモデルに追加します。値を追加するなどの非常に特殊な操作を実行するだけでよい場合は、これが最適なソリューションです。

どの方法が最適なのかは、それぞれのシナリオによって異なります。

0

値を編集する必要がある場合は、テーブルモデルで作業してください。

JTable.getModel()

(またはgetTableModel()、私は覚えていない)、それはカプセル化に来るとき

1

は、たぶん私はあまりにも肛門のだが、私はTableModelのかJTableの公開はありませんそれ自体は通常。 JTableを含むクラスでは、JTableの値を追加/削除/設定するためのメソッドを作成します。適切な場合は、JTableがそのデータを変更する可能性のあるサービスを遵守しているクラスを持つこともできます。

+0

+1オブザーバーの考え方 – akf

関連する問題