Java swing-JTable-子表/分组-能做到吗? [英] Java swing - JTable - Sub-tables / grouping - can it be done?

查看:53
本文介绍了Java swing-JTable-子表/分组-能做到吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

也许我看起来不够努力,但是在查找具有子组的Java摆动表示例时遇到了麻烦.

Maybe I'm not looking hard enough, but i'm having trouble finding a Java swing table example that has sub-groups.

类似的东西:

| Table header 1 | Table header 2 | Table header 3 |
| Group A |
| Group A Col11 | | Group A Col12 | | Group A Col13 | 
| Group A Col21 | | Group A Col22 | | Group A Col23 | 
| Group B |
| Group B Col11 | | Group B Col2 | | Group A Col3 | 
....

Java Swing表可以完成这种事情吗?

Can this sort of thing be done with Java Swing tables?

推荐答案

首先,让我们建立一个简单的Java Swing JTable测试.

First, let's set up a simple Java Swing JTable test.

使用这样排列的数据,我们要做的就是将重复的Group数据值更改为空格.

With the data arranged like this, all we have to do is change the duplicate Group data values to spaces.

我们通过为JTable创建表模型来做到这一点.

We do that by creating a table model for the JTable.

首先,这是创建JFrame的代码.

First, here's the code to create the JFrame.

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class JTableFrame implements Runnable {

    @Override
    public void run() {
        JFrame frame = new JFrame("JTable Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JTableModel model = new JTableModel();
        JTable table = new JTable(model.getModel());
        JScrollPane scrollPane = new JScrollPane(table);
        frame.add(scrollPane);

        frame.setLocationByPlatform(true);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new JTableFrame());
    }
}

接下来,这是创建表模型的代码.我使用了硬编码的数据源.您可能会从某处获取数据.

Next, here's the code to create the table model. I used a hard coded data source. You would probably get the data from somewhere.

import javax.swing.table.DefaultTableModel;

public class JTableModel {

    private DefaultTableModel model;

    private String[] columns = {"Group", "Alpha", "Beta", "Gamma"};

    private String[][] rows = {{"Group A", "all", "box", "game"},
            {"Group A", "apple", "band", "going"},
            {"Group B", "alabaster", "banquet", "ghost"},
            {"Group B", "alone", "boy", "ghoulish"}};

    public JTableModel() {
        this.model = new DefaultTableModel();
        this.model.setColumnIdentifiers(columns);
        setModelRows();
    }

    private void setModelRows() {
        String prevGroup = "";
        for (String[] row : rows) {
            if (row[0].equals(prevGroup)) {
                row[0] = " ";
            } else {
                prevGroup = row[0];
            }
            this.model.addRow(row);
        }
    }

    public DefaultTableModel getModel() {
        return model;
    }

}

这篇关于Java swing-JTable-子表/分组-能做到吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆