JTableのオブジェクトのArrayListの内容を表示する最も簡単な方法は何ですか?

StackOverflow https://stackoverflow.com/questions/623690

  •  05-07-2019
  •  | 
  •  

質問

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

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

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

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

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

役に立ちましたか?

解決

に表示するコンテンツを追加するには< code> JTable TableModel を使用して、表示するアイテムを追加します。

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

次の例では、データのホルダーである KeyValuePair クラスを使用します( Track クラスと同様)。これは、 DefaultTableModel で表を表示する JTable として:

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

他のヒント

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

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オブジェクトです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top