在Swing中的模型表中以红色显示数据

时间:2013-07-01 11:28:22

标签: java swing jtable

如何在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中以红色和绿色行显示结果。

3 个答案:

答案 0 :(得分:2)

在表格的第4列创建 CellRenderer 。您的结果对象将传递到其方法中,在该方法中,您可以检查结果,并将标签或面板背景更改为绿色或红色。

模型对象应该是 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;
    }
}

您需要将此渲染器添加到表格中的所有列。

答案 1 :(得分:2)

为了影响JTable中任何单元格的状态,您需要提供自定义TableCellRenderer

有关详细信息,请参阅how to use tables

现在。简单地突出显示一行就是很多工作。

相反,您最好看一下JXTable from SwingX提供行突出显示

example

答案 2 :(得分:1)

  

如果,结果通过它应该显示为绿色,结果失败,那么同样应该是红色

请参阅Table Row Rendering以获取一个示例,该示例允许您根据其中一列中的值为整行渲染某种颜色。此方法无需创建自定义渲染器即可使用。