问题描述
我有一个Track对象的ArrayList.每个Track对象都有以下字段(所有字符串):
I have an ArrayList of Track objects.Each Track object has the following fields (all Strings):
网址,标题,创作者,专辑,流派,作曲家
url, title, creator, album, genre, composer
我想在JTable中显示这些轨道,每一行都是Track对象的实例,每一列都包含Track对象的属性之一.
I want to display these tracks in a JTable, with each row being an instance of a Track object, and each column containing one of the properties of a Track object.
如何使用JTable显示此数据?我使用了AbstractTableModel,它可以正确实现getValueAt()方法.不过,我在屏幕上看不到任何东西.
How can I display this data using a JTable? I've used an AbstractTableModel that implements the getValueAt() method correctly. Still, I dont see anything on the screen.
还是仅使用数组更容易?
Or is it easier just to use arrays?
推荐答案
为了添加要显示在 JTable
,一个使用 TableModel
添加要显示的项目.
In order to add contents to display on a JTable
, one uses the TableModel
to add items to display.
向DefaultTableModel
添加一行数据的一种方法是使用 addRow
方法,该方法将采用表示数组中对象的Object
数组.由于没有直接从ArrayList
添加内容的方法,因此可以通过访问ArrayList
的内容来创建Object
的数组.
One of a way to add a row of data to the DefaultTableModel
is by using the addRow
method which will take an array of Object
s that represents the objects in the row. Since there are no methods to directly add contents from an ArrayList
, one can create an array of Object
s by accessing the contents of the ArrayList
.
以下示例使用KeyValuePair
类作为数据的持有者(类似于您的Track
类),该类将用于填充 DefaultTableModel
将表显示为JTable
:
The following example uses a KeyValuePair
class which is a holder for data (similar to your Track
class), which will be used to populate a DefaultTableModel
to display a table as a 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});
}
这篇关于在JTable中显示对象的ArrayList内容的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!