首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在netbeans 6.1aka Matisse中使用JTables

在netbeans 6.1aka Matisse中使用JTables
EN

Stack Overflow用户
提问于 2008-09-19 23:47:05
回答 4查看 7K关注 0票数 1

在您回答之前,:是的,我在Sun上读过jtable教程。不,这对我没有帮助。是的,我是个笨蛋。我特别感兴趣的是如何通过Netbeans向Jtable动态添加行和列。我已经有了一个包含带有数据的hashmap的对象。我不知道我应该把那个对象传递到哪里或哪个对象。耽误您时间,实在对不起!

我有一个向量,它包含一系列对象(长度l) (每个对象对应于一行)。如何使向量对象显示在JTable上?

EN

回答 4

Stack Overflow用户

发布于 2008-09-19 23:54:40

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

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

票数 2
EN

Stack Overflow用户

发布于 2008-09-20 01:08:58

为了说明,下面是如何使用DefaultTableModel来显示来自HashMapVector的数据的示例。

下面是将数据从HashMap转储到DefaultTableModel的示例,该DefaultTableModel用作JTableTableModel

代码语言:javascript
复制
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

代码语言:javascript
复制
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class JTableExample extends JFrame
{
    private void makeGUI()
    {
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Vector with data.
        Vector<String> v = new Vector<String>();
        v.add("first");
        v.add("second");

        // Create a DefaultTableModel, which will be used as the
        // model for the JTable.
        DefaultTableModel model = new DefaultTableModel();

        // Add a column of data from Vector into the model.
        model.addColumn("data", v);

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

我不得不承认,在使用上述示例时,列名不会出现(我通常使用DefaultTableModelsetDataVector方法),因此,如果有人对如何显示列名有任何建议,请执行以下操作:)

票数 1
EN

Stack Overflow用户

发布于 2008-09-20 00:05:43

为了增加我之前的答案,我实际上已经编写了一个表模型,它使用(本质上) ArrayList<Row>作为支持数据,其中Row是一个HashMap<String, Object>,将列名映射到值。

整个过程大约有1500行代码,尽管我的代码可能对您的目的过于苛刻,而且您可能不必编写几乎相同的代码。万事如意!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/106446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档