`
wuhaidong
  • 浏览: 357695 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

JTable的表头合并

    博客分类:
  • SE
 
阅读更多

JTableHeader的单个表头最复杂的操作也就是Renderer渲染和Editor编辑,然后增加事件处理和悬浮框提示,最多再加点特殊显示效果,这和JTable单元格的操作相同,在前面的例子里都已经讲过了,这里就剩下最后一个也是关于JTableHeader表头的操作了表头单元格的合并和拆分.
JTableHeader的单个表头可编辑时可以把它看做一个JTextField,不可操作时可以看做一个JLabel,对于表头的合并和拆分操作来说就是把JLabelJTextField进行合并和拆分的过程.JTable表头的合并简单来说就是把你选定的要合并的表头的边线擦掉,然后调整宽度和高度,再在这几个合并的表头外围画一个新的边线,然后设置JTableHeaderUI,刷新就可以了,JTable的单元格基本相同,唯一的区别就是JTableHeader的表头不像单元格那个容易得到和处理,我们需要定义数据结构来存储它.

 

 

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import com.swing.lx.table.ColumnGroup;
import com.swing.lx.table.GroupableTableHeader;
import com.swing.lx.table.GroupableTableHeaderUI;
 
public class TableDemo extends JFrame{
 
    String[] header = new String[] {"name", "age", "country", "home", "telephone"};
    String[][] content = new String[][]{{"name1","18","China", "shangHai", "111"}, 
    		{"name1","18","China", "shangHai", "111"}};
     
    public TableDemo() {
        super("test");
        setSize(500, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     
         
        DefaultTableModel dm = new DefaultTableModel(content, header);
 
        JTable table = new JTable(dm) {
            @Override
            protected JTableHeader createDefaultTableHeader() {
                 
                return new GroupableTableHeader(columnModel);
//            	return null;
            }
        };
        
        TableColumnModel cm = table.getColumnModel();
        ColumnGroup g_name = new ColumnGroup("Source");
        g_name.add(cm.getColumn(0));
        g_name.add(cm.getColumn(1));
        g_name.add(cm.getColumn(2));
        ColumnGroup g_name2 = new ColumnGroup("Target");
        g_name2.add(cm.getColumn(3));
        g_name2.add(cm.getColumn(4));
                 
        GroupableTableHeader header = (GroupableTableHeader) table.getTableHeader();
        header.addColumnGroup(g_name);
        header.addColumnGroup(g_name2);
        table.getTableHeader().setUI(new GroupableTableHeaderUI());
         
        JScrollPane panel = new JScrollPane(table);
        getContentPane().add(panel, BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        TableDemo demo = new TableDemo();
        demo.setVisible(true);
    }
}
 
分享到:
评论
3 楼 geekant 2015-01-21  
import com.swing.lx.table 这个包是你自己写的?
2 楼 lliiqiang 2014-10-30  
如何渲染表头?不常用不符合习惯规则仍然会在特殊情况发挥作用.
1 楼 hailinren 2013-11-13  
import com.swing.lx.table.ColumnGroup; 在哪里下载?

相关推荐

    JTable表头合并

    而"JTable表头合并"是Swing中的一个高级特性,允许开发者创建具有复杂结构的表头,以更好地呈现和组织数据。这种功能特别适用于那些需要将相关列分组或分类的情况。 表头合并是通过`DefaultTableColumnModel`的`...

    复杂JTable-跨列表头

    在这种情况下,可以将这些列的表头合并为一个“客户”类别,提高表格的可读性和理解性。 在提供的文件中,我们可以看到以下几个关键类: 1. **GroupableTableHeaderUI**: 这是JTable表头的自定义UI实现,负责渲染...

    复杂JTable(复杂表头、跨行列表体)

    跨行列表体通常涉及到单元格合并,这在`JTable`中可以通过重写`AbstractTableModel`类的`getColumnCount()`、`getRowCount()`、`getValueAt()`等方法来实现。当某些行需要合并时,`getColumnCount()`返回的列数应该...

    netbeans jtable 复杂表头的实现方法

    当我们需要创建具有复杂结构的表头,比如多级或合并的表头时,这通常涉及到自定义`JTableHeader`和使用`DefaultTableCellRenderer`。NetBeans IDE提供了便捷的方式来帮助开发者实现这些功能。本篇文章将详细介绍如何...

    SWING表头合并

    在Swing中,表头由JTableHeader类表示,我们可以创建一个继承自DefaultTableHeaderCellRenderer的自定义渲染器来实现表头合并。表头合并通常涉及到两个主要步骤:绘制合并的单元格和调整列宽以适应合并后的表头。 1...

    JTable实例大全

    `JTable`实例大全提供了各种实用示例,涵盖了`JTable`的高级功能,如合并表头和合并表格,这些功能在开发复杂的桌面应用程序时尤为关键。 1. **JTable基本用法**: `JTable`是基于`AbstractTableModel`的数据模型...

    jTable的使用

    4. **表头合并**:通过`RowHeaderRenderer`可以实现多列合并的表头效果。 5. **数据验证**:在编辑时添加数据验证,确保输入的数据符合特定格式或规则。 6. **表格工具栏**:可以添加工具栏来控制表格的操作,如...

    JTable Examples

    本资料集合了25个已经调试通过的`JTable`例子,涵盖了多种高级特性和用法,如多级表头、多级行头以及单元格合并等,旨在帮助开发者深入理解和应用`JTable`。 1. **多级表头(Nested Table Headers)**: 多级表头...

    java

    "Groupable TableHeader"可能是指一种扩展了标准JTable表头的自定义实现,允许用户以分组的形式来查看或操作数据,这对于数据的分类和组织非常有用。 在Java中,实现这样的功能通常涉及到对JTable和JTableHeader类...

    MulitiTable

    《JTable实现多表头与单元格合并技术详解》 在Java Swing开发中,JTable是一种常用的组件,用于展示二维数据。在某些情况下,我们可能需要对表格进行更复杂的布局,比如合并行或列,以达到类似Excel中的多表头效果...

    实用Swing 实例

    在实际应用中,有时我们需要对`JTable`的单元格进行合并,这通常是出于美化界面或组织数据的需要。描述中提到的"实用的Swing实例"很可能是针对`JTable`单元格合并的一种实现方式。 要实现`JTable`的单元格合并,你...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例045 用数组设置JTable表格的列名与列宽 55 3.2 数组操作 57 实例046 数组的下标界限 57 实例047 按钮控件数组实现计数器界面 58 实例048 复选框控件数组 59 实例049 用数组反转字符串 60 3.3 数组排序与查询 61 ...

Global site tag (gtag.js) - Google Analytics