2015-11-24 6 views
0

Это информация о данных сотрудника. У меня есть дата начала контакта и дата истечения срока действия, поэтому я хочу знать, как я могу выделить строку в jtable, если есть контакт, срок действия которого истекает через месяц или меньше.выделить строку jtable за прошлую дату напоминание

enter image description here

Спасибо

+0

Добро пожаловать в Stack Overflow, пожалуйста [зайдите в тур] (http://stackoverflow.com/tour) после этого, узнайте [как задать хороший вопрос] (http://stackoverflow.com/help/how- to-ask) и, наконец, опубликовать [runnable example] (http://stackoverflow.com/help/mcve), который мы можем скопировать-вставить. Таким образом, вы получите больше, лучше и быстрее ответы, и вы продемонстрируете, что вы уже что-то пробовали, а не просто запрашиваете код :) – Frakcool

+0

См. [Концепции: Редакторы и рендереры] (http://docs.oracle .com/javase/tutorial/uiswing/components/table.html # editrender) и [Использование пользовательских рендерингов] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#renderer) – MadProgrammer

ответ

3

Вы можете переопределить prepareRenderer(...) метод Table, чтобы выделить всю строку на основе данных в строке:

JTable table = new JTable(model) 
{ 
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) 
    { 
     Component c = super.prepareRenderer(renderer, row, column); 

     if (!isRowSelected(row)) 
     { 
      Date date = getModel().getValueAt(row, ???); 

      if (date expires in one month) 
       c.setBackground(someColor); 
      else 
       c.setBackground(getBackground()); 
     } 

     return c; 
    } 
}; 

Заканчивать Table Row Rendering для некоторых примеров ,