Установка цвета в строке Jtable

Мне нужна помощь.

У меня есть две таблицы. введите здесь описание изображения

В таблице инструкций каждая строка должна быть выделена в соответствии с тем, какая инструкция выполняется на этапах конвейера. Например, в момент времени t10 I5 находится в стадии IS, поэтому I5 в таблице инструкций должен быть выделен или цвет строки в таблице инструкций должен быть изменен. Скажем, строка I5 окрашена в красный цвет, строка I6 — в розовый цвет, I7 — зеленый цвет, I8 — серый цвет, I9 — оранжевый цвет.

Мне очень нужен ваш опыт., спасибо.. :)


person Celine    schedule 21.03.2012    source источник
comment
Вы ознакомились с руководством по JTable? Там такие вещи хорошо объясняются. Пожалуйста, ознакомьтесь с ним, в частности с разделом о создании пользовательских рендереров. Похоже, вы захотите прочитать учебное пособие по SwingWorker. а также, поскольку выполнение вашей инструкции, вероятно, должно быть выполнено в фоновом потоке.   -  person Hovercraft Full Of Eels    schedule 21.03.2012
comment
могут быть проблемы с используемым Look and Feel, это обычный Nimbus или какой-то пользовательский L&F на основе Nimbus ...   -  person mKorbel    schedule 21.03.2012
comment
Ах, я надеялся, что наш постоянный эксперт по рендерингу JTable появится, и он появился!   -  person Hovercraft Full Of Eels    schedule 21.03.2012


Ответы (1)


Пожалуйста, попробуйте это, используя пользовательский рендеринг, который легко решит вашу проблему.

JTable myTable = new JTable();
// You can specify the columns you need to do the required action
myTable.getColumnModel().getColumn(0).setCellRenderer(new MyRenderer());

public class MyRenderer extends DefaultTableCellRenderer {

    // This is a overridden function which gets executed for each action to
    /// your Jtable
    public Component getTableCellRendererComponent (JTable table, 
        Object obj, boolean isSelected, boolean hasFocus, int row, int column) {

       // Use this row, column to change color for the row you need, e.g.
        if (isSelected) { // Cell selected
           cell.setBackground(Color.green);
        }
    }
} 

Примечание. Этот рендерер можно использовать не только для выделения цветом. Рендеринг Jtable. Для синхронизации ваших изменений в ответ на очередь вы можете запланировать их в отдельном потоке.

person Ashok Raj    schedule 21.03.2012