2016-12-03 3 views
-2

Может кто-то, пожалуйста, помогите мне сделать этот код более эффективным. Я знаю, что есть лучший способ сделать это, но я не могу понять это. Извините, я довольно новичок в Java. Любая помощь приветствуется.Java (ищет лучшее решение) - JTable цвет обновления ячеек таблицы

Я хотел бы, чтобы цвет ячеек и текста изменялся в соответствии со значением числа в ячейке. Если диапазон значений: - 0-39 = красный - 40- 69 = Зеленый - выше 70 = Orange - все остальное белое с черным текстом

вот мой код. Заранее спасибо

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

Я не знаю, если вы храните ваши данные в виде строки или в виде целого числа, но основная логика будет использовать «>» и «<» оператор, чтобы проверить для диапазон значений.

Затем вы можете назначить цвет для каждого диапазона:

if (value > ??? && value < ???) 
    // set the color 
else if (value > ??? && value < ???) 
    // set another color 
else if (...) 
Смежные вопросы