Java(寻找更好的解决方案) - 表格单元格的JTable更新颜色

时间:2016-12-03 17:15:47

标签: java jtable

有人可以帮助我提高这段代码的效率。我知道有更好的方法可以做到这一点,但我无法弄明白。对不起,我是Java的新手。任何帮助将不胜感激。

我希望单元格和文本的颜色根据单元格中的数字值进行更改。如果值范围是: - 0-39 =红色 - 40-69 =绿色 - 70以上=橙色 - 其他一切都是白色的黑色文字

这是我的代码。提前致谢

    DefaultTableModel model = new DefaultTableModel(data, columnNames);

    JTable table = new JTable(model) {
        @Override
        public Component prepareRenderer(TableCellRenderer renderer, int row, int col) {
            Component newcomponent = super.prepareRenderer(renderer, row, col);
            Object value = getModel().getValueAt(row, col);
            if ((value.equals(39)) || (value.equals(38)) || (value.equals(37)) || (value.equals(36))
                    || (value.equals(35)) || (value.equals(34)) || (value.equals(33)) || (value.equals(32))
                    || (value.equals(31)) || (value.equals(30)) || (value.equals(29)) || (value.equals(28))
                    || (value.equals(27)) || (value.equals(26)) || (value.equals(25)) || (value.equals(24))
                    || (value.equals(23)) || (value.equals(22)) || (value.equals(21)) || (value.equals(20))
                    || (value.equals(19)) || (value.equals(18)) || (value.equals(17)) || (value.equals(16))
                    || (value.equals(15)) || (value.equals(14)) || (value.equals(13)) || (value.equals(12))
                    || (value.equals(11)) || (value.equals(10)) || (value.equals(9)) || (value.equals(8))
                    || (value.equals(7)) || (value.equals(6)) || (value.equals(5)) || (value.equals(4))
                    || (value.equals(3)) || (value.equals(2)) || (value.equals(1)) || (value.equals(0))) {
                newcomponent.setBackground(Color.red);
                newcomponent.setForeground(Color.red);
            } else if ((value.equals(69)) || (value.equals(68)) || (value.equals(67)) || (value.equals(66))
                    || (value.equals(65)) || (value.equals(64)) || (value.equals(63)) || (value.equals(62))
                    || (value.equals(61)) || (value.equals(60)) || (value.equals(59)) || (value.equals(58))
                    || (value.equals(57)) || (value.equals(56)) || (value.equals(55)) || (value.equals(54))
                    || (value.equals(53)) || (value.equals(52)) || (value.equals(51)) || (value.equals(50))
                    || (value.equals(49)) || (value.equals(48)) || (value.equals(47)) || (value.equals(46))
                    || (value.equals(45)) || (value.equals(44)) || (value.equals(43)) || (value.equals(42))
                    || (value.equals(41)) || (value.equals(40))) {
                newcomponent.setBackground(Color.green);
                newcomponent.setForeground(Color.green);
            } else if ((value.equals(100)) || (value.equals(99)) || (value.equals(98)) || (value.equals(97))
                    || (value.equals(96)) || (value.equals(95)) || (value.equals(94)) || (value.equals(93))
                    || (value.equals(92)) || (value.equals(91)) || (value.equals(90)) || (value.equals(89))
                    || (value.equals(88)) || (value.equals(87)) || (value.equals(86)) || (value.equals(85))
                    || (value.equals(84)) || (value.equals(83)) || (value.equals(82)) || (value.equals(81))
                    || (value.equals(80)) || (value.equals(79)) || (value.equals(78)) || (value.equals(77))
                    || (value.equals(76)) || (value.equals(75)) || (value.equals(74)) || (value.equals(73))
                    || (value.equals(72)) || (value.equals(71)) || (value.equals(70))) {
                newcomponent.setBackground(Color.orange);
                newcomponent.setForeground(Color.orange);
            } else {
                newcomponent.setBackground(Color.white);
                newcomponent.setForeground(Color.black);
            }
            return newcomponent;
        }
    };

1 个答案:

答案 0 :(得分:1)

我不知道您是将数据存储为字符串还是整数,但基本逻辑是使用">"和"<"操作员测试一系列值。

然后您可以为每个范围指定颜色:

if (value > ??? && value < ???)
   // set the color
else if (value > ??? && value < ???)
   // set another color
else if (...)