在回答之前:是的,我已经在Sun 上阅读了jtable教程。不,它没有帮助我。是的,我是个笨蛋。 请不要回答该文档的提及。我特别感兴趣的是如何通过Netbeans IDE动态地向我的Jtable添加行和列。我已经有一个包含我的数据的hashmap的对象。我无法弄清楚我应该将该对象传递到哪个或哪个对象。谢谢你的时间!
我有一个包含一系列(长度为l)的对象(每个对应一行)的向量。如何让该矢量对象显示在JTable上?
答案 0 :(得分:2)
JTable
使用TableModel
来保存其数据。您的哈希/数据向量需要进行调整才能使用;您可以使用散列/向量作为后备数据编写TableModel
实现,或者,如果您不动态更新散列/向量并需要它自动显示,您可以简单地将所有内容复制到实例中DefaultTableModel
,并使用它。
如果您确实使用了适配器并动态更新了散列/向量,请记住必须在事件派发线程中完成所有更新。 : - )
答案 1 :(得分:1)
以下示例说明如何使用DefaultTableModel
显示HashMap
和Vector
的数据。
以下是将HashMap
的数据转储到用作DefaultTableModel
的{{1}}的{{1}}的示例。
TableModel
使用JTable
将一列数据包含到import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableExample extends JFrame
{
private void makeGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HashMap with some data.
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
// Create a DefaultTableModel, which will be used as the
// model for the JTable.
DefaultTableModel model = new DefaultTableModel();
// Populate the model with data from HashMap.
model.setColumnIdentifiers(new String[] {"key", "value"});
for (String key : map.keySet())
model.addRow(new Object[] {key, map.get(key)});
// Make a JTable, using the DefaultTableModel we just made
// as its model.
JTable table = new JTable(model);
this.getContentPane().add(table);
this.setSize(200,200);
this.setLocation(200,200);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample().makeGUI();
}
}
:
Vector
我必须承认,在使用上述示例时我不会显示列名称(我通常使用JTable
的{{1}}方法),所以如果有人对如何制作有任何建议列名出现,请执行:)
答案 2 :(得分:0)
要添加到我之前的答案中,为了它的价值,我实际上编写了一个表格模型,它使用(基本上)ArrayList<Row>
作为后备数据,其中Row
是HashMap<String, Object>
},将列名映射到值。
整个过程大约有1500行代码,虽然我的代码可能对你的目的来说太过分了,你可能不需要编写几乎相同的代码。一切顺利!
答案 3 :(得分:0)
只是coobird的帖子的补充;要显示标题,我这样做了:
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableExample extends JFrame
{
private void makeGUI()
{
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// HashMap with some data.
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
// Create a DefaultTableModel, which will be used as the
// model for the JTable.
DefaultTableModel model = new DefaultTableModel();
// Populate the model with data from HashMap.
model.setColumnIdentifiers(new String[] {"key", "value"});
for (String key : map.keySet())
model.addRow(new Object[] {key, map.get(key)});
// Make a JTable, using the DefaultTableModel we just made
// as its model.
JTable table = new JTable(model);
this.getContentPane().add(new JScrollPane(table));
this.setSize(200,200);
this.setLocation(200,200);
this.validate();
this.setVisible(true);
}
public static void main(String[] args)
{
new JTableExample().makeGUI();
}
}
顺便说一句,你的帖子对我很有帮助,你不知道我多么感激!