JTable 如何设置某个单元格的背景颜色 想实现判断表格中的数据功能,如果大于5%就用红色背景色,如果小于5%就用绿色背景色。怎么写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载的TableModel里的getValueAt(int row,int col)方法: public Object getValueAt(int row, int col) { if(col == 3){ if((Integer)data[row][col] >= 10) return "<html><font color=red>"+data[row][col]+"</font></html>"; else return "<html><font color=green>"+data[row][col]+"</font></html>"; }else { return data[row][col]; } } 重写CellRender,请参考如下代码: jTable0.getColumnModel().getColumn(0).setCellRenderer( new DefaultTableCellRenderer() { private static final long serialVersionUID = 1L; @Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { // TODO Auto-generated method stub int result = (Integer) value; if (result > 8) { this.setBackground(Color.red); } else { this.setBackground(Color.white); } return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); } }); 1楼的答非所问啊。2楼的,怎么把这段代码用在JTable上我的代码是 DefaultTableModel dtm=new DefaultTableModel(data,title); jTable2.setModel(dtm);其中data是二维数组,title是字符串数组。 初始化Jtable的时候:table = new JTable() { @Override public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component component = super.prepareRenderer(renderer, row, column); String data= getValueAt(row, 8).toString().trim(); if (data大于5%) { component.setBackground(Color.red); } else if (data小于5%){ component.setBackground(Color.green); }else{ component.setBackground(Color.white); component.setForeground(Color.BLACK); } Object value = getValueAt(row, column); boolean isSelected = false; boolean hasFocus = false; // Only indicate the selection and focused cell if not printing if (!isPaintingForPrint()) { isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row); boolean colIsLead = (columnModel.getSelectionModel() .getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner(); } return renderer.getTableCellRendererComponent(this, value, isSelected, hasFocus, row, column); } }; 定制一个TableCellRenderer renderer类似于二楼的JTable table;table.setDefaultCellRenderer(Object.class,renderer);这样就设置了Table的渲染器,只要对象类型是Object,就会用renderer进行渲染。TableCellRenderer用法可以参考http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx 关于创造得故事 怪哉,这样写文件拷贝为什么会出错 eclipse开发servlet问题 有没有 英文的java教程视频的下载?谢谢 这个语句到底代表什么? 高分求救:一个简单的程序,大家快进啊,……………………………………………………………… 关于图象的奇怪问题 AWT中如何实现swing里JTabbedPane的功能(请高手指教) 请问学习JAVA究竟该怎样进阶呢? 求大神解决java界面图片显示问题 在实际项目中java虚拟机参数是怎么加载的? checkstyle,文件结尾留空行
if(col == 3){
if((Integer)data[row][col] >= 10)
return "<html><font color=red>"+data[row][col]+"</font></html>";
else return "<html><font color=green>"+data[row][col]+"</font></html>";
}else {
return data[row][col];
}
}
jTable0.getColumnModel().getColumn(0).setCellRenderer(
new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L; @Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
int result = (Integer) value;
if (result > 8) {
this.setBackground(Color.red);
} else {
this.setBackground(Color.white);
}
return super.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
}
});
2楼的,怎么把这段代码用在JTable上
我的代码是 DefaultTableModel dtm=new DefaultTableModel(data,title);
jTable2.setModel(dtm);
其中data是二维数组,title是字符串数组。
public Component prepareRenderer(TableCellRenderer renderer,
int row, int column) {
Component component = super.prepareRenderer(renderer, row,
column); String data= getValueAt(row, 8).toString().trim();
if (data大于5%) {
component.setBackground(Color.red);
} else if (data小于5%){
component.setBackground(Color.green);
}else{
component.setBackground(Color.white);
component.setForeground(Color.BLACK);
} Object value = getValueAt(row, column);
boolean isSelected = false;
boolean hasFocus = false; // Only indicate the selection and focused cell if not printing
if (!isPaintingForPrint()) {
isSelected = isCellSelected(row, column); boolean rowIsLead = (selectionModel.getLeadSelectionIndex() == row);
boolean colIsLead = (columnModel.getSelectionModel()
.getLeadSelectionIndex() == column); hasFocus = (rowIsLead && colIsLead) && isFocusOwner();
} return renderer.getTableCellRendererComponent(this, value,
isSelected, hasFocus, row, column);
} };
JTable table;
table.setDefaultCellRenderer(Object.class,renderer);
这样就设置了Table的渲染器,只要对象类型是Object,就会用renderer进行渲染。TableCellRenderer用法可以参考
http://blog.csdn.net/chosen0ne/archive/2009/08/16/4453267.aspx