关于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());
就可以了.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货