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

为JTable加上行头

阅读更多
本文主要介绍一下如何给表格增加行头的问题。默认的JTable已经支持为表格设置列头啦,但是对于行头却没有提供对应的接口。要实现给表格增加行头可以从下面两种方式来考虑。

方法1:将表格的第一列作为行头,然后对其进行伪装处理,使其看起来和其他列不一样,表现起来像是一个行头。使用这种方式需要将行头的数据也作为表格里的普通数据来处理,可能会造成表头和数据划分不清晰,但是有时候这也是一种快捷的解决问题的方法。可以参考下面的示例代码
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;


public class TableWithRowHeader {

	public static void main(String[] args) {
		final JFrame f = new JFrame("有行头的表格");
		String[][] tableData = {
				{"张三", "90" , "89" , "67" , "88"},
				{"李四", "80" , "99" , "77" , "58"},
				{"王二", "80" , "99" , "77" , "58"}
		};
		String[] columnNames = {"姓名\\课程", "数学", "语文", "英语", "化学"};
		
		JTable table = new JTable(tableData, columnNames);
		// 将表格的第一列作为表头,使用渲染器改变其外观,看起来像表头
		table.getColumnModel().getColumn(0).setCellRenderer(new RowHeaderRenderer());
		
		f.add(new JScrollPane(table));
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.pack();
		SwingUtilities.invokeLater(new Runnable()
		{

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

class RowHeaderRenderer implements TableCellRenderer
{
	private JLabel label = new JLabel();
	// 获取表头的字体、前景色和背景色,用来将Label伪装成表头的样子
	private static Font font = (Font) UIManager.get("TableHeader.font");
	private static Color fgc = (Color) UIManager.get("TableHeader.foreground");
	private static Color bgc = (Color) UIManager.get("TableHeader.background");
	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		// TODO Auto-generated method stub
		label.setFont(font);
		label.setHorizontalAlignment(SwingConstants.CENTER);
		label.setText(value.toString());
		label.setOpaque(true);
		label.setForeground(fgc);
		label.setBackground(bgc);
		return label;
	}
	
}


效果图如下:


方法2:真正为表格增加一下行头,行头里的数据将不再作为JTable的数据部分存在,而是在此JTable的外面,这里需要将JScrollPane的组件图搞出来,今天有点晚了,明天再补吧...

已经补充:http://daimojingdeyu.iteye.com/blog/419309
  • 大小: 10.7 KB
分享到:
评论

相关推荐

    JTable使用 JTable使用

    JTable使用 JTable使用JTable使用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动态刷新数据

    JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据

    Swing JTable 常用属性

    Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性

    swing Jtable使用checkbox

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

    支持ResultSet的JTable

    ResultSet直接在JTable显示

    JTable实现行间拖拽的最简单方法

    无需修改已有代码,快速为jtable添加行间拖拽功能。 无需实现dnd相关接口,使用方便

    复杂JTable-跨列表头

    复杂JTable-跨列表头, JTable表头合并,已经测试Ok,希望对你有用

    mvc+Jquery-jTable

    mvc下使用jtable插件

    JTable多种实用示例

    Excel导入JTable JTable导出Excel JTable删除行 JTable显示实体数据 JTable的Vector添加实体,支持直接增加实体至JTable中,删除行时允许多种可能性(单选 连续多选 任意多选)。

    Jtable 中放入多个按钮

    JTable 在一个单元格放入多个按钮,

    Java JTree+JTable应用

    java JTree+JTable使用样例,实现将JTree的节点内容显示到JTable中,eclipse导入maven项目 maven编译: mvn clean package

    Jtable导出到excel

    如果业务应用程序可以将数据导入 Microsoft Excel 和从 Microsoft Excel 中导出数据,则会为用户带来方便,使用户可以使用无处不在的该电子表格程序的强大功能。此 Java 技巧将帮助您理解系统剪贴板,并使您的 ...

    JTable添加CheckBox

    一个JTable里添加CheckBox的完整例子,包括表头的JCheckBox全选联动

    JTable自动换行

    JTable的自动换行。挺好用的。里面还可以设置字体大小。分享一下。

    Swing之JTable的详细介绍

    Swing之JTable的详细介绍,讲述jtable的操作和excle表之间的转换

    jtable详解

    java swing jtable详解 world文档形式

    jtable使用方法介绍

    jtable使用方法介绍,很专业,内容详细,蛮有用。

Global site tag (gtag.js) - Google Analytics