本文主要介绍一下如何给表格增加行头的问题。默认的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和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
JTable的使用收藏 1.JTable与TableModel ...3.新加列,将列设为下拉框 4.表格排序 3. JTable事件响应和项目设想 4.一个游戏:《java连连看》 1.需求分析 2.编写TableModel和界面实现 3.连连看事件监听 总结和任务
JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据JTable动态刷新数据
Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性Swing JTable 常用属性
swing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing Jtable使用checkboxswing ...
ResultSet直接在JTable显示
无需修改已有代码,快速为jtable添加行间拖拽功能。 无需实现dnd相关接口,使用方便
复杂JTable-跨列表头, JTable表头合并,已经测试Ok,希望对你有用
mvc下使用jtable插件
Excel导入JTable JTable导出Excel JTable删除行 JTable显示实体数据 JTable的Vector添加实体,支持直接增加实体至JTable中,删除行时允许多种可能性(单选 连续多选 任意多选)。
JTable 在一个单元格放入多个按钮,
java JTree+JTable使用样例,实现将JTree的节点内容显示到JTable中,eclipse导入maven项目 maven编译: mvn clean package
如果业务应用程序可以将数据导入 Microsoft Excel 和从 Microsoft Excel 中导出数据,则会为用户带来方便,使用户可以使用无处不在的该电子表格程序的强大功能。此 Java 技巧将帮助您理解系统剪贴板,并使您的 ...
一个JTable里添加CheckBox的完整例子,包括表头的JCheckBox全选联动
JTable的自动换行。挺好用的。里面还可以设置字体大小。分享一下。
Swing之JTable的详细介绍,讲述jtable的操作和excle表之间的转换
java swing jtable详解 world文档形式
jtable使用方法介绍,很专业,内容详细,蛮有用。