Swing之JTable篇设置表格选中行的前景色和背景色
2011-11-19 19:16
387 查看
本身JTable没有方法可以直接设置选择行的前景色和背景色,但是我们可以通过从写TableCellRenderer这个接口来实现我们需要的功能。此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法。
我们通过重写
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
返回用于绘制单元格的组件。
table - 要求渲染器绘制的 JTable;可以为 null
value - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串 "true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值
isSelected - 如果使用选中样式的突出显示来呈现该单元格,则为 true;否则为 false
hasFocus - 如果为 true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑
row - 要绘制的单元格的行索引。绘制头时,row 值是 -1
column - 要绘制的单元格的列索引
来实现。
我们通过重写
getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
返回用于绘制单元格的组件。
table - 要求渲染器绘制的 JTable;可以为 null
value - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串 "true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值
isSelected - 如果使用选中样式的突出显示来呈现该单元格,则为 true;否则为 false
hasFocus - 如果为 true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑
row - 要绘制的单元格的行索引。绘制头时,row 值是 -1
column - 要绘制的单元格的列索引
来实现。
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; class EvenOddRenderer implements TableCellRenderer { public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer(); public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); Color foreground, background; if (isSelected) { foreground = Color.YELLOW; background = Color.GREEN; } else { if (row % 2 == 0) { foreground = Color.BLUE; background = Color.WHITE; } else { foreground = Color.WHITE; background = Color.BLUE; } } renderer.setForeground(foreground); renderer.setBackground(background); return renderer; } } public class ResizeTable { public static void main(String args[]) { final Object rowData[][] = { { "1", "one", "I" }, { "2", "two", "II" }, { "3", "three", "III" }}; final String columnNames[] = { "#", "English", "Roman" }; final JTable table = new JTable(rowData, columnNames); JScrollPane scrollPane = new JScrollPane(table); table.setDefaultRenderer(Object.class,new EvenOddRenderer()); JFrame frame = new JFrame("Resizing Table"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(scrollPane, BorderLayout.CENTER); frame.setSize(300, 150); frame.setVisible(true); } }
相关文章推荐
- java从入门到精髓 - Swing表格自定义JTable 选中行及取消选中
- 给表格内容换行和表格选中行设置背景色
- Swing之JTree篇:设置树选中节点背景色
- 给Swing的GUI组件设置前景色和背景色
- QTextEdit中选中文本修改字体与颜色,全部文本修改字体与颜色(设置调色板的前景色、背景色、文字颜色以及基色)
- [jtable]设置复选框前景色与背景色
- Java Swing JTable 表格【3:创建表格,表头存在的设置】
- Swing面板上调整JTable的行高和列宽,以及表格超出JScorllPane时设置滚动条
- MyEclipse设置当前行背景颜色、选中单词前景色、背景色
- MyEclipse设置选中单词其它同名单词前景色和背景色
- java从入门到精髓 - Swing表格JTable不支持滚动
- VS2010设置VC6的字体样式及背景色、选中字高亮
- linux 设置命令行属性,背景色,前景色等
- C#/VB.NET设置Excel表格背景色
- 如何设置文字的前景色和背景色
- ios tableView设置cell选中颜色以及表格默认选中某行
- css设置input框没有边框,选中时取消背景色
- Java Swing组件编程之JTable表格用法实例详解
- Java Swing JTable 表格【1:创建表格填充数据】
- Java Swing JTable 表格【6:表格模型DefaultTableModel】