我正在开发的java应用程序.i想要在一个表中显示数据,该表具有3列名、过程和年份.i,根据internet.this代码上的一个教程,使用tablerenderer实际上所做的是根据行号..but用青色和灰色对行进行着色,只有当年份列(年份的值)等于某一值时,才将青色设置为行,让我们假设3.如果第3行的列值等于5,那么第3行的颜色应该是蓝色的,否则它应该是灰色的。这是我在互联网..so上找到的代码,我如何修改它以实现我的目标??
import java.awt.Color;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
public class CustomCellRenderer{
JTable table;
TableColumn tcol;
public static void main(String[] args) {
new CustomCellRenderer();
}
public CustomCellRenderer(){
JFrame frame = new JFrame("Creating a Custom Cell Reanderer!");
JPanel panel = new JPanel();
String data[][] = {{"Vinod","Computer","3"},
{"Rahul","History","2"},
{"Manoj","Biology","5"},
{"Sanjay","PSD","6"}};
String col [] = {"Name","Course","Year"};
DefaultTableModel model = new DefaultTableModel(data,col);
table = new JTable(model);
tcol = table.getColumnModel().getColumn(0);
tcol.setCellRenderer((TableCellRenderer) new CustomTableCellRenderer());
tcol = table.getColumnModel().getColumn(1);
tcol.setCellRenderer((TableCellRenderer) new CustomTableCellRenderer());
tcol = table.getColumnModel().getColumn(2);
tcol.setCellRenderer((TableCellRenderer) new CustomTableCellRenderer());
JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
JScrollPane pane = new JScrollPane(table);
panel.add(pane);
frame.add(panel);
frame.setSize(500,150);
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public class CustomTableCellRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table,
Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(
table, obj, isSelected, hasFocus, row, column);
if (isSelected) {
cell.setBackground(Color.green);
}
else {
if (row % 2 == 0 ) {
cell.setBackground(Color.cyan);
}
else {
cell.setBackground(Color.lightGray);
}
}
return cell;
}
}
}发布于 2013-11-30 19:09:29
您可以像在CustomTableCellRenderer类中那样简单地这样做。
TableModel model = table.getModel();
String colYear = model.getColumnName(2);
int colYearValue = Integer.valueOf((String) model.getValueAt(row, 2));
if (colYearValue == 3) {
cell.setBackground(Color.cyan);
} else {
cell.setBackground(Color.lightGray);
}发布于 2013-11-30 18:25:42
但是,只有当年份列(年份的值)等于某一值时,我才想将青色设置为行。
不要使用单独的渲染器。相反,您可以使用在表行绘制中找到的方法。
https://stackoverflow.com/questions/20303829
复制相似问题