我试图从发票表中搜索旧发票数据。当我搜索发给同一客户的发票时,我想在同一发票ID中为购买的商品设置相同的颜色。这是我从互联网上获取的东西。
例如,如果我从同一发票ID中购买了3个不同的商品,我想在jtable中将这些行涂成红色(或任何我建议的颜色)。一位顾客通常可以购买至少50张不同发票中的物品。所以有50种不同的发票ID。
所以我希望颜色应该按照数学顺序改变。我搜索了与此问题相关的互联网。由于我是java的新手,我无法理解它。
新上传
答案 0 :(得分:3)
以下是使用DefaultTableCellRenderer的示例代码。
示例代码:
Object[] columnNames = { "A", "B", "C" };
Object[][] data = { { "abc", new Double(850.503), 53 }, { "lmn", new Double(36.23254), 6 },
{ "pqr", new Double(8.3), 7 }, { "xyz", new Double(246.0943), 23 } };
JTable table = new JTable(data, columnNames);
MyCustomTableCellRenderer cellRenderer = new MyCustomTableCellRenderer();
for (int i = 0; i < table.getColumnCount(); i++) {
table.getColumnModel().getColumn(i).setCellRenderer(cellRenderer);
}
CustomTableCellRenderer:
class MyCustomTableCellRenderer 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;
}
}
答案 1 :(得分:3)
我猜你需要创建一个包含该ID的ID和渲染颜色的Map。
所以我希望颜色应该按照数学顺序改变
也许你可以通过更改&#34; hue&#34;来改变颜色。 HSL颜色。有关允许您使用HSL颜色并修改&#34; hue&#34;的类,请参阅HSL Color。容易。
我想在同一发票ID中为购买的商品设置相同的颜色。
然后,为了呈现每一行,您可以查看Table Row Rendering一种方法,该方法将允许您根据行的ID呈现每一行。一旦确定了行的ID,就可以从Map获得渲染颜色。