【问题标题】:How to set same colors in jtable and set different colors to different result in java如何在 jtable 中设置相同的颜色并在 java 中设置不同的颜色以得到不同的结果
【发布时间】:2014-06-23 18:19:59
【问题描述】:

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

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

所以我希望颜色应该按照数学顺序发生变化。我已经搜索了与此问题相关的互联网。由于我是 Java 新手,所以我不太了解它。

新上传

【问题讨论】:

  • 单元格的渲染归结为TableCellRenderer,看看Using Custom Renderers。您还可以考虑在 SwingX 库中对 JXTable 的高亮支持
  • 感谢您的支持.. :)

标签: java mysql swing netbeans jtable


【解决方案1】:

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

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

也许您可以通过更改 HSL 颜色的“色调”来更改颜色。请参阅HSL Color 了解允许您使用 HSL 颜色并轻松修改“色调”的类。

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

然后,要渲染每一行,您可以查看Table Row Rendering 的一种方法,该方法允许您根据行的 ID 渲染每一行。一旦确定了行的 ID,您就可以从地图中获取渲染颜色。

【讨论】:

  • 你了解我的情况.. 非常感谢.. :)
  • 你能看看那张上传的照片吗?我想在相同的 inid 中添加相同的颜色。
  • 我给你的链接展示了如何根据行中的值为整行着色的工作示例。
  • 我去了那个链接。 :( 但它会下载整个线束。我找不到哪个示例对应哪个
  • but it download whole cord bundle. - 不知道这意味着什么。您将查看“数据”选项卡中的示例。该示例查看“类型”列中的数据以确定如何为该行着色。在您的情况下,您将查看“Id”列中的数据。因为我提供了一个工作示例,所以我无法更清楚地解释这个概念。
【解决方案2】:

这是使用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;
    }
}

【讨论】:

  • 这个答案很清楚。谢谢你。您仍然可以对这些绳索添加评论吗?请...我添加了另一张图片,请看一下。我理解“row % 2 == 0”时的颜色沉降。我仍然想为相同的 inid 设置相同的颜色。请帮忙。
猜你喜欢
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2022-01-01
  • 1970-01-01
相关资源
最近更新 更多