2013-07-01 1 views
0

Как показать данные в красной таблице моделей в Swing?Показывать данные в красной таблице моделей в Swing

Данные таблицы верны. Если результат пройти он должен появиться в зеленый цвет и результат не удалось, то же самое должно быть в красном цвете в модели таблицы в колебании

if (newResultSet.isEmpty() != true) { 
     // System.out.println("final calculated summary records size : "+newResultSet.size()); 

     for (int indx = 0; indx < newResultSet.size(); indx++) { 
      Resultset rs = (Resultset) newResultSet.get(indx); 

      Object[] row = new Object[6]; 

      row[0] = rs.getTestCaseNumber(); 
      row[1] = rs.getTestExecution(); 
      row[2] = rs.getTestCasePass(); 
      row[3] = rs.getTestCaseFail(); 
      row[4] = rs.getTestResult(); 
      row[5] = rs.getTestCaseDateTime(); 

      //System.out.println(row[0].toString()+" "+row[2].toString()+" "+row[3].toString()); 

      model.addRow(row); 
     } 

    } else { 
     JOptionPane.showMessageDialog(null, "NO DATA IS AVAILABLE TO DISPLAY", "Empty Message", JOptionPane.ERROR_MESSAGE); 
    } 
} 

public void createAndShowGUI() { 

    JFrame frame = new JFrame("Execution Report Table"); 
    frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 


    summarizeData(); 

    final JTable table = new JTable(model); 

    JScrollPane scrollPane = new JScrollPane(table); 
    frame.add(scrollPane); 

    setOpaque(true); //content panes must be opaque 

    frame.setLayout(new GridLayout(1, 0)); 

    frame.pack(); 
    frame.setVisible(true); 
} 

Я хочу показать результат в красном и зеленом ряду в ModelTable.

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

Где находится этот объект модели? Начало вашего кода не завершено –

ответ

2

Создайте CellRenderer на 4-й колонке в таблице. Объект результата передается в его метод, и в этом методе вы можете проверить результат и изменить цвет метки или панели на зеленый или красный.

Ваш объект модель должна быть реализация класса AbstractTableModel.

Ваш рендер должен выглядеть примерно так:

public class ColorRenderer extends JLabel implements TableCellRenderer { 

    public Component getTableCellRendererComponent(
     JTable table, Object color, 
     boolean isSelected, boolean hasFocus, 
     int row, int column) { 

     if(table.getValueAt(row, 4).equals("fail")) { 
      setBackground(Color.RED); 
     }else { 
      setBackground(Color.GREEN) 
     } 

     return this; 
    } 
} 

Вам нужно добавить этот рендерер все столбцы в таблице.

+0

* «Ваш объект модели должен быть реализацией класса ABstractTableModel» * ... Почему? – MadProgrammer

+0

ОК, не совсем необходимо в этом случае. Да, вы можете добавить cellrenderer в таблицу без определения собственной модели. Но это хорошо. –

2

Для обеспечения состояния любой ячейки в JTable вам необходимо указать пользовательскую форму TableCellRenderer.

Для получения более подробной информации см. how to use tables.

Теперь. Это большая работа, чтобы просто выделить строку.

Вместо этого вы могли бы быть лучше брать взгляд JXTable from SwingX, который обеспечивает ряд выделения

Для example

1

Если результат пройти он должен появиться в зеленый цвет и результат не удалось, то же самое должно быть в красном цвете

См. Table Row Rendering для примера, который позволяет вашему рендерингу целую строку определенного цвета на основе значения в одном из столбцов. Такой подход работает без создания пользовательских рендерингов.