使用JTbes与netbeans 6.1 aka Matisse

时间:2008-09-19 23:47:06

标签: java swing netbeans

在回答之前:是的,我已经在Sun 上阅读了jtable教程。不,它没有帮助我。是的,我是个笨蛋。 请不要回答该文档的提及。我特别感兴趣的是如何通过Netbeans IDE动态地向我的Jtable添加行和列。我已经有一个包含我的数据的hashmap的对象。我无法弄清楚我应该将该对象传递到哪个或哪个对象。谢谢你的时间!

我有一个包含一系列(长度为l)的对象(每个对应一行)的向量。如何让该矢量对象显示在JTable上?

4 个答案:

答案 0 :(得分:2)

JTable使用TableModel来保存其数据。您的哈希/数据向量需要进行调整才能使用;您可以使用散列/向量作为后备数据编写TableModel实现,或者,如果您不动态更新散列/向量并需要它自动显示,您可以简单地将所有内容复制到实例中DefaultTableModel,并使用它。

如果您确实使用了适配器并动态更新了散列/向量,请记住必须在事件派发线程中完成所有更新。 : - )

答案 1 :(得分:1)

以下示例说明如何使用DefaultTableModel显示HashMapVector的数据。

以下是将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>作为后备数据,其中RowHashMap<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();
    }
}

顺便说一句,你的帖子对我很有帮助,你不知道我多么感激!