如何在jtable中设置相同的颜色,并在java中为不同的结果设置不同的颜色

时间:2014-05-07 00:00:36

标签: java mysql swing netbeans jtable

我试图从发票表中搜索旧发票数据。当我搜索发给同一客户的发票时,我想在同一发票ID中为购买的商品设置相同的颜色。这是我从互联网上获取的东西。

Table

例如,如果我从同一发票ID中购买了3个不同的商品,我想在jtable中将这些行涂成红色(或任何我建议的颜色)。一位顾客通常可以购买至少50张不同发票中的物品。所以有50种不同的发票ID。

所以我希望颜色应该按照数学顺序改变。我搜索了与此问题相关的互联网。由于我是java的新手,我无法理解它。

新上传
enter image description here

2 个答案:

答案 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;
    }
}

enter image description here

答案 1 :(得分:3)

我猜你需要创建一个包含该ID的ID和渲染颜色的Map。

  

所以我希望颜色应该按照数学顺序改变

也许你可以通过更改&#34; hue&#34;来改变颜色。 HSL颜色。有关允许您使用HSL颜色并修改&#34; hue&#34;的类,请参阅HSL Color。容易。

  

我想在同一发票ID中为购买的商品设置相同的颜色。

然后,为了呈现每一行,您可以查看Table Row Rendering一种方法,该方法将允许您根据行的ID呈现每一行。一旦确定了行的ID,就可以从Map获得渲染颜色。