`
daimojingdeyu
  • 浏览: 275266 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

为JTable加上行头(下)

阅读更多
把上次没有写完的方法补全一下(上一篇http://daimojingdeyu.iteye.com/blog/417915),先来看一下JScrollPane的结构

只要在JScrollPane的rowheader位置增加一下可以作为表头的组件就可以了,这里我们选择JTable,也就是说这个关键就是用一个table来作为另一个table的行头。
上图的左上角,即JScrollPane的rowheader和columnheader的交界处,为一个corn组件,选用一个JLabel来填充。代码如下:
import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;


public class TableWithRowHeader2 {

	public static void main(String[] args) {
		final JFrame f = new JFrame("有行头的表格2");
		String[][] tableData = {
				{"90" , "89" , "67" , "88"},
				{"80" , "99" , "77" , "58"},
				{"80" , "99" , "77" , "58"}
		};
		String[] columnNames = {"数学", "语文", "英语", "化学"};
		String[] rowNames = {"张三", "李四", "王二"};
		String tableCorn = "姓名\\课程";
		
		JTable table = new JTable(tableData, columnNames);
		
		JScrollPane scrollPane = new JScrollPane(table);
		
		// 设置表格的行头和行列交界处的边角的显示
		scrollPane.setRowHeader(createRowHeader(rowNames));
		JLabel corner = new JLabel(tableCorn);
		corner.setBackground((Color) UIManager.get("TableHeader.background"));
		scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, corner);
		
		f.add(scrollPane);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		SwingUtilities.invokeLater(new Runnable()
		{

			@Override
			public void run() {
				f.setVisible(true);
			}
			
		});
	}

	/**
	 * 获取到一个使用表格加入到ScrollPane的rowheader,使其作为表的行头
	 * @param rowNames
	 * @return
	 */
	private static JViewport createRowHeader(String[] rowNames) {
		String[][] data = new String[rowNames.length][1];
		for (int i = 0; i < rowNames.length; i++) {
			data[i][0] = rowNames[i];
		}
		//列头随便取一个,在JViewport里是不能显示的
		JTable table = new JTable(data, new String[]{"aa"});
		table.setEnabled(false);
		table.setBackground((Color) UIManager.get("TableHeader.background"));
		JViewport view = new JViewport();
		view.setView(table);
		view.setPreferredSize(new Dimension(60,54));
		return view;
	}
}


效果图可以参考http://daimojingdeyu.iteye.com/blog/417915

思路应该就这2种吧(1、行头和数据混合。2、使用JScrollPane分离显示),其他的暂时没见到过。
  • 大小: 13 KB
分享到:
评论

相关推荐

    JTable使用 JTable使用

    JTable使用 JTable使用JTable使用JTable使用

    JTable

    JTable的显示效果

    JTable动态刷新数据

    在动态刷新数据时,需要使用 DefaultTableModel,这是一个实现了 TableModel 接口的类,默认情况下,它会将数据存储在一个 Vector 中。Vector 的每个元素都是一个行数据,行数据又是一个 Vector,包含了每个单元格的...

    JTable 拖动行 移动行

    JTable 拖动行 移动行的ui,直接 table.setUI(new DragDropRowTableUI()); 调用

    JTable合并单元格

    例如,为了创建一个标题行或列,或者在某些情况下合并具有相同数据的单元格以减少重复,合并单元格就显得尤为重要。以下是对`JTable`合并单元格的详细解释。 首先,`JTable`本身并不直接支持单元格的合并功能。要...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    JTable的使用收藏

    JTable的使用收藏 1.JTable与TableModel ...3.新加列,将列设为下拉框 4.表格排序 3. JTable事件响应和项目设想 4.一个游戏:《java连连看》 1.需求分析 2.编写TableModel和界面实现 3.连连看事件监听 总结和任务

    JTable 练习例子exa

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示表格数据。它是`javax.swing.JTable`类的实例,提供了一个可交互的二维数据视图,允许用户浏览、编辑和操作表格中的数据。这个"JTable ...

    支持ResultSet的JTable

    5. **将ResultSet转换为TableModel**:为了让`JTable`能显示`ResultSet`的数据,我们需要将`ResultSet`的内容转换为`TableModel`。这通常涉及到遍历`ResultSet`,获取列名和值,然后添加到`TableModel`中。 6. **...

    Swing之JTable详解

    ### Swing之JTable详解 #### 类层次结构图 在Swing框架中,`JTable`是构建GUI应用程序中表格的主要组件。它继承自`JComponent`类,这使得`JTable`能够支持丰富的图形用户界面功能。下面展示了`JTable`的类层次结构...

    java 中 Jtable的用法

    - `AUTO_RESIZE_NEXT_COLUMN`: 只调整下一个列。 - `AUTO_RESIZE_SUBSEQUENT_COLUMNS`: 调整后续的所有列。 - `AUTO_RESIZE_LAST_COLUMN`: 只调整最后一列。 - `AUTO_RESIZE_ALL_COLUMNS`: 调整所有列。 例如: ```...

    JTable 操作单元格 行 列

    `autoResizeMode`属性可以设置为自动调整列宽以适应内容。 4. **隐藏/显示列**:可以通过修改`DefaultTableColumnModel`来隐藏或显示列。 5. **排序列**:`RowSorter`也可以用来对列进行排序,只需要设置适当的`...

    Excel内容复制到JTable中

    - Excel中的数据可能需要转换为适合JTable显示的格式,比如日期可能需要转换为`SimpleDateFormat`对象格式化的字符串。 - 对于数字,可能需要设定JTable列的`NumberFormat`,以便正确显示。 5. **JTable的动态增...

    JTable自动换行

    默认情况下,`JTable`的单元格使用`DefaultTableCellRenderer`,它不支持文本的自动换行。为了实现自动换行,我们需要自定义一个渲染器,例如提供一个支持多行文本的`JTextArea`或`JLabel`。`...

    复杂JTable-跨列表头

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

    JTable的初步编程

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示数据集。它是`javax.swing.JTable`类的一个实例,可以用来显示和编辑表格数据。本教程将针对`JTable`的初步编程进行讲解,尤其适用于...

    mvc+Jquery-jTable

    在Controller中,你需要为jTable的四个基本操作(列出、创建、更新、删除)编写对应的Action。例如: ```csharp public JsonResult GetEmployees() { var employees = db.Employees.ToList(); return Json(new { ...

    JTable的介绍.doc

    `JFrame`的`contentPane`添加了`JScrollPane`,并设置布局管理器为`BorderLayout.CENTER`,使得表格居中显示。最后,`JFrame`设置了标题、调整大小并显示出来。 表格由两部分构成:行标题(Column Header)和行对象...

    Java JTree+JTable应用

    在某些情况下,你可能需要将`JTree`或`JTable`中的数据解析为格式化的文本并显示在`JTextPane`中。而`JSplitPane`是一个布局管理器,用于将两个组件(如`JTree`和`JTable`)放置在一个可调整大小的分隔面板中,用户...

    swing Jtable使用checkbox

    swing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing ...

Global site tag (gtag.js) - Google Analytics