当前位置: 技术问答>java相关
怎样设置JTable的颜色???
来源: 互联网 发布时间:2015-09-06
本文导语: 比如要根据判断某列的值,来设置表格某行的不同颜色.(字体色) | 关于JTable的显示问题已经有不少了.继续强烈建议学习理解MVC结构. JTable的数据保存在model里边,负责显示的是TableCellRenderer(...
比如要根据判断某列的值,来设置表格某行的不同颜色.(字体色)
|
关于JTable的显示问题已经有不少了.继续强烈建议学习理解MVC结构.
JTable的数据保存在model里边,负责显示的是TableCellRenderer(这是一个接口).Swing里边有一个DefaultTableCellRenderer(类)扩展JLabel.一般扩展这个类就可以了.在自己的扩展类里边实现
Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean cellHasFocus,int row,int col)
这个方法.
这样说吧:
public class MyRendeer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table,Object
value,boolean isSelected,boolean cellHasFocus,
int row,int col)
{//这个返回的component就是每个Table的小格子cell的负责显示的绘制器.
//你可以返回任何component,比如CheckBox,TextField等等.不过一般是用
//JLabel,其中DefaultTableCellRenderer就是扩展JLable
//其中参数中的Object就是你这一行要显示的数据,你需要将其显式转换为你
// 自己的类型,比如String str = (String)Object.这需要根据你model中的
//数据对象的类型来定.row,col就是当前对象锁在的行和列.
if(col == 2){
String strTemp = (String)Object;
if(strTemp.length>=4){
setBackground(Color.red);
setForeground(Color.blue);
}
}
...
return this;
}
}
这里我只是个示意,你还要考虑如果这一行的数据被选中的时候,或者hasFocus的时候应该是什么颜色,不过都是在这个方法中处理.
myTable.setCellRenderer(new MyRenderer());
就可以了.
JTable的数据保存在model里边,负责显示的是TableCellRenderer(这是一个接口).Swing里边有一个DefaultTableCellRenderer(类)扩展JLabel.一般扩展这个类就可以了.在自己的扩展类里边实现
Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean cellHasFocus,int row,int col)
这个方法.
这样说吧:
public class MyRendeer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent(JTable table,Object
value,boolean isSelected,boolean cellHasFocus,
int row,int col)
{//这个返回的component就是每个Table的小格子cell的负责显示的绘制器.
//你可以返回任何component,比如CheckBox,TextField等等.不过一般是用
//JLabel,其中DefaultTableCellRenderer就是扩展JLable
//其中参数中的Object就是你这一行要显示的数据,你需要将其显式转换为你
// 自己的类型,比如String str = (String)Object.这需要根据你model中的
//数据对象的类型来定.row,col就是当前对象锁在的行和列.
if(col == 2){
String strTemp = (String)Object;
if(strTemp.length>=4){
setBackground(Color.red);
setForeground(Color.blue);
}
}
...
return this;
}
}
这里我只是个示意,你还要考虑如果这一行的数据被选中的时候,或者hasFocus的时候应该是什么颜色,不过都是在这个方法中处理.
myTable.setCellRenderer(new MyRenderer());
就可以了.