4

Track オブジェクトの ArrayList があります。各 Track オブジェクトには、次のフィールド (すべて文字列) があります。

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

これらのトラックを JTable に表示したいと考えています。各行は Track オブジェクトのインスタンスであり、各列は Track オブジェクトのプロパティの 1 つを含んでいます。

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

それとも、配列を使用する方が簡単ですか?

4

2 に答える 2

10

に表示するコンテンツを追加するには、 をJTable使用しTableModelて表示する項目を追加します。

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

次の例では、データのホルダーであるクラスを使用します(あなたのクラスKeyValuePairに似ています) 。TrackDefaultTableModelJTable

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});
}
于 2009-03-08T15:13:37.230 に答える
0

次に、私が抱えている問題は、問題がまったく見えないことです。インターフェイスを作成するために使用したコードは次のとおりです。

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});

ちなみにtはTrackオブジェクトです。

于 2009-03-08T16:15:00.110 に答える