2009-03-08 9 views
4

私はTrackオブジェクトのArrayListを持っています。 各トラックのオブジェクトは、次のフィールド(すべての文字列)があります。私は、各行は、Aのインスタンスであることと、JTableの中でこれらのトラックを表示したいJTable内のオブジェクトのArrayListの内容を表示する最も簡単な方法は何ですか?

URL、タイトル、作成者、アルバム、ジャンル、作曲

をトラックオブジェクト、およびトラックオブジェクトのプロパティの1つを含む各列

このデータをJTableを使用して表示するにはどうすればよいですか?私は、getValueAt()メソッドを正しく実装するAbstractTableModelを使用しました。それでも、画面上に何も表示されません。

配列を使用する方が簡単ですか?

答えて

10

JTableに表示する内容を追加するために、TableModelを使用して表示する項目を追加します。

DefaultTableModelにデータの行を追加する方法の1つは、メソッドを使用することです。この方法では、行内のオブジェクトを表すObjectの配列が使用されます。 ArrayListからコンテンツを直接追加する方法がないので、ArrayListの内容にアクセスしてObjectの配列を作成できます。次いで

class KeyValuePair 
{ 
    public String key; 
    public String value; 

    public KeyValuePair(String k, String v) 
    { 
     key = k; 
     value = v; 
    } 
} 

// ArrayList containing the data to display in the table. 
ArrayList<KeyValuePair> list = new ArrayList<KeyValuePair>(); 
list.add(new KeyValuePair("Foo1", "Bar1")); 
list.add(new KeyValuePair("Foo2", "Bar2")); 
list.add(new KeyValuePair("Foo3", "Bar3")); 

// Instantiate JTable and DefaultTableModel, and set it as the 
// TableModel for the JTable. 
JTable table = new JTable(); 
DefaultTableModel model = new DefaultTableModel(); 
table.setModel(model); 
model.setColumnIdentifiers(new String[] {"Key", "Value"}); 

// Populate the JTable (TableModel) with data from ArrayList 
for (KeyValuePair p : list) 
{ 
    model.addRow(new String[] {p.key, p.value}); 
} 
+0

恐ろしい!!!!!一房ありがとう。 – Penchant

+0

あなたは大歓迎です:) – coobird

0

次の例では、JTableようなテーブルを表示するDefaultTableModelを移入するために使用されます(あなたTrackクラスに似ている)データのためのホルダーであるKeyValuePairクラスを使用し私が持っている問題は、問題が全く見えないということです。 は、ここで私はインターフェイスを作るために使用したコードです:

public Interface(){ 

    setSize(1024, 768); 
    setBackground(new Color(0,0,0)); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    add(new MenuBar());//simple JMenuBar implementation 

    table= new JTable(); 
    table.setPreferredScrollableViewportSize(new Dimension(500, 500)); 

    JScrollPane jsp = new JScrollPane(table); 
    add(jsp); 

    pack(); 
    setVisible(true); 
} 

このコードが実行された後、私はこの何回もない別のクラスのコードを持っている:

((DefaultTableModel)mainInterface.table.getModel()).addRow(
new String[] {t.location,t.title,t.creator,t.album,t.genre,t.composer}); 

トンは、トラックオブジェクトでありますところで。

関連する問題