java表格的使用 单元格绘制
来源:互联网 发布:床上用品品牌 知乎 编辑:程序博客网 时间:2024/06/05 17:48
JTable单元格是由单元格绘制器绘制出来的,这是一些执行TableCellRenderer接口的类。TableCellRenderer接口定义了唯一的getTableCellRendererComponent方法,返回对Component的引用,二Component则用来实现绘图操作。但是因为定义单独的类来执行TableCellRenderer比较方便,而且可以实现绘图操作,所以TablecellRenderer通常只返回对自己的引用。下面是传递给getTableCellRendererComponent()方法的几个参数:
- 对JTable的引用,含有要绘制的单元格
- 对单元格值的引用
- boolean标记,用来表示单元格是否被选中
- boolean标记,用来表示单元格是否为输入焦点
- 绘制的单元格的行索引号
- 绘制的单元格的列索引号
1 public void setTableStyle(JTable table){ 2 //设置表头 的绘制器 3 DefaultTableCellHeaderRenderer headerRender = new DefaultTableCellHeaderRenderer(){ 4 private static final long serialVersionUID = 7012909291394175134L; 5 public Component getTableCellRendererComponent(JTable table, Object value, 6 boolean isSelected, boolean hasFocus, int row, int column) { 7 //绘制单元格的边框 8 setBorder(new MatteBorder(0,1,0,1, new Color(0x1A2730))); 9 setText((value == null) ? "" : value.toString());10 setBackground(new Color(0x2d7e89));11 setFont(new Font("宋体", Font.PLAIN,15));12 return this;13 }14 };15 headerRender.setHorizontalAlignment(JLabel.CENTER);16 table.getTableHeader().setDefaultRenderer(headerRender); 17 //设置背景颜色18 table.getTableHeader().setBackground( new Color(0x2d7e89));19 table.getTableHeader().setForeground(Color.white);20 //设置单元格的绘制器21 DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer(){22 private static final long serialVersionUID = -3807459616324121906L;23 public Component getTableCellRendererComponent(JTable table, Object value,24 boolean isSelected, boolean hasFocus, int row, int column) {25 if (isSelected){26 //设置选中时 单元格的颜色27 setBackground(new Color(0x6EBBCA));28 }29 else {30 setBorder( new MatteBorder(0,1,0,1, new Color(0x1A2730)));31 setBackground(new Color(0xDCEBED));32 }33 setText((value == null) ? "" : value.toString());34 setFont(new Font("宋体", Font.BOLD,14));35 return this;36 }37 };38 cellRender.setHorizontalAlignment(JLabel.CENTER);39 cellRender.setForeground(Color.RED);40 table.setDefaultRenderer(Object.class, cellRender);41 // 设置表是否绘制单元格周围的网格线。42 table.setShowGrid(false);43 //设置表是否绘制单元格之间的水平线44 table.setShowHorizontalLines(false);45 table.setBackground(new Color(0xDCEBED));46 //设置单元格之间的间距47 table.setIntercellSpacing(new Dimension(0,0));48 49 table.getColumn(colname[colname.length - 1]).setMaxWidth(0); 50 table.getColumn(colname[colname.length - 1]).setMinWidth(0);51 table.getColumn(colname[colname.length - 1]).setPreferredWidth(0);52 }
运行结果
通过单元格绘制器,可以设置指定单元格或者指定列指定行的颜色字体,甚至可以根据单元格的值不同,显示不同的颜色等等。
代码示例如下
1 /** 2 * 当编号在5~7之间 设为蓝色 3 * @param table 4 */ 5 public void setTableStyleByID(JTable table){ 6 //设置表头 的绘制器 7 DefaultTableCellHeaderRenderer headerRender = new DefaultTableCellHeaderRenderer(){ 8 private static final long serialVersionUID = 7012909291394175134L; 9 public Component getTableCellRendererComponent(JTable table, Object value,10 boolean isSelected, boolean hasFocus, int row, int column) {11 //绘制单元格的边框12 setBorder(new MatteBorder(0,1,0,1, new Color(0x1A2730)));13 setText((value == null) ? "" : value.toString());14 setBackground(new Color(0x2d7e89));15 setFont(new Font("宋体", Font.PLAIN,15));16 return this;17 }18 };;19 headerRender.setHorizontalAlignment(JLabel.CENTER);20 table.getTableHeader().setDefaultRenderer(headerRender); 21 //设置背景颜色22 table.getTableHeader().setBackground( new Color(0x2d7e89));23 table.getTableHeader().setForeground(Color.white);24 //设置单元格的绘制器25 DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer(){26 private static final long serialVersionUID = -3807459616324121906L;27 public Component getTableCellRendererComponent(JTable table, Object value,28 boolean isSelected, boolean hasFocus, int row, int column) {29 int var = Integer.valueOf(table.getModel().getValueAt(row, 0).toString());30 31 if (isSelected){32 //设置选中时 单元格的颜色33 setBackground(Color.BLACK);34 }35 else {36 if (var >=5 && var <=7){37 setBackground(Color.BLUE);38 }else{39 setBackground(new Color(0xDCEBED));40 }41 setBorder( new MatteBorder(0,1,0,1, new Color(0x1A2730)));42 }43 setText((value == null) ? "" : value.toString());44 setFont(new Font("宋体", Font.BOLD,14));45 return this;46 }47 };48 cellRender.setHorizontalAlignment(JLabel.CENTER);49 cellRender.setForeground(Color.RED);50 table.setDefaultRenderer(Object.class, cellRender);51 // 设置表是否绘制单元格周围的网格线。52 table.setShowGrid(false);53 //设置表是否绘制单元格之间的水平线54 table.setShowHorizontalLines(false);55 table.setBackground(new Color(0xDCEBED));56 //设置单元格之间的间距57 table.setIntercellSpacing(new Dimension(0,0));58 59 table.getColumn(colname[colname.length - 1]).setMaxWidth(0); 60 table.getColumn(colname[colname.length - 1]).setMinWidth(0);61 table.getColumn(colname[colname.length - 1]).setPreferredWidth(0);62 }
运行结果
0 0
- java表格的使用 单元格绘制二
- java表格的使用 单元格绘制
- 使用JQuery实现HTML表格的单元格合并
- 使用JQuery实现HTML表格的单元格合并
- 使用JQuery实现HTML表格的单元格合并
- 【java】使用mysql+java绘制Excel二维表格
- java--表格的使用
- 简化表格单元格的生成++++++
- 可滑动的表格单元格
- 表格单元格换行的问题
- 关于表格的合并单元格
- latex表格的绘制
- 页面表格的绘制
- Java Swing JTable 表格【12:为表格的单元格指定文字说明】
- Android使用RecyclerView绘制表格
- android 使用TableLayout 绘制表格
- 【转载】使用VML技术实现圆角表格的绘制
- 表格特效代码 立体表格 圆角表格 变色的单元格
- 设计模式-装饰模式
- python 小技巧
- hive改表结构的两个坑
- poj 3070 Fibonacci
- Python 批处理修改图像的名字
- java表格的使用 单元格绘制
- angularjs 表单验证,包含必填、手机、邮箱...
- 常见面试题(未完待续。。)
- 免费域名和空间搭建个人网站——服务器篇
- 并发编程--Semaphore计数信号量
- Java反射机制基础详解
- jfinal的绝对路径和action请求路径添加文件夹名称而导致"404 not found"的问题
- 报错Error:(2, 0) No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices
- SVG可缩放矢量图形文件