0

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

4

3 回答 3

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;
    }
}

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

于 2013-07-01T11:35:29.217 回答
2

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

有关更多详细信息,请参阅如何使用表格

现在。简单地突出显示一行需要做很多工作。

相反,您最好从 SwingX 中查看 JXTable,它提供行突出显示

例如_

于 2013-07-01T11:35:45.567 回答
1

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

有关允许您根据其中一列中的值将整行渲染为某种颜色的示例,请参见表格行渲染。这种方法无需创建自定义渲染器即可工作。

于 2013-07-01T15:04:18.010 回答