当前位置: 首页 > 面试题库 >

JTable行颜色取决于模型中的Value?

公孙棋
2023-03-14
问题内容

我的表格模型中有以下代码:

public class DocumentProjectTableModel extends AbstractTableModel{

    private List<MyDocument> myDocuments;
    public String getValueAt(int row, int column) {
            String toReturn = null;
            MyDocument myDocument = myDocuments.get(row);
            SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");

            switch (column) {
                case 0:
                    if(myDocument.getProject().getRegDate()!=null) toReturn = format.format(myDocument.getProject().getRegDate());
                    break;
                case 1:
                    toReturn = myDocument.getProject().getRegNum();
                    break;
                case 2:
                    toReturn = myDocument.getProject().getDescription();
                    break;
                case 3:
                    toReturn = myDocument.getProject().getShortName();
                    break;
                case 4:
                    toReturn = myDocument.getProject().getSecondName()+myDocument.getProject().getFirstName()+myDocument.getProject().getMiddleName();
                    break;

            }
            return toReturn;
        }
//  some other stuff is not shown

我想更改每行的背景颜色,例如if myDocument.getIsRegistered() == true,我希望此行具有黄色背景,如果myDocument.getIsValid == false行是蓝色,等等。

我发现了一些示例,这些示例根据JTable中的值对行重新着色。但是实际上并未显示getIsValid和getIsRegistered(),它们仅存在于模型中。任何建议或示例都将真正有帮助。提前致谢。

更新。我的TableCellRenderer:

public class MyTableCellRenderer extends JLabel implements TableCellRenderer {

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
        String actualValue = (String) value;
        // Set the colors as per the value in the cell...
        if(actualValue.equals("lifesucks") ){
            setBackground(Color.YELLOW);
        }
        return this;
    }
}

使用渲染器:

            int vColIndex = 0;
            TableColumn col = resultTable.getColumnModel().getColumn(vColIndex);
            col.setCellRenderer(new MyTableCellRenderer());
 resultTable.setModel(new DocumentProjectTableModel(docs));

表格通常显示为黄色。为什么?

更新2。

resultTable=new JTable(new DocumentProjectTableModel(docs)){
            public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
            {
                Component c = super.prepareRenderer(renderer, row, column);
                //  Color row based on a cell value
                if (!isRowSelected(row)) {
                    c.setBackground(getBackground());
                    int modelRow = convertRowIndexToModel(row);
                    String type = (String) getModel().getValueAt(modelRow, 0);

                        c.setBackground(Color.GREEN);
                }
                return c;
            }
        };

表格为空:(


问题答案:

由于要给整个行着色,因此使用“ 表行渲染”比创建多个自定义渲染器更容易。

我发现了一些示例,这些示例根据JTable中的值对行重新着色。但是getIsValid和getIsRegistered()实际上并未显示,它们仅存在于模型中

您仍然可以从表中访问模型。您只需使用:

table.getModel().getValueAt(...);


 类似资料:
  • 问题内容: 我有一个3列的JTable。我已经为所有3列设置了这样的代码(也许不是很有效?)。 在一个随机的背景颜色为每一行返回一个组件。 程序运行时如何将背景更改为其他随机颜色? 问题答案: 一种方法是存储模型中每一行的当前颜色。这是一个固定在3列3行的简单模型: 注意通话; 这将导致仅更新表的该行。 渲染器可以从表中获取模型: 更改行的颜色很简单:

  • 因此,我试图根据单元格的结果将jtable中的行的颜色更改为红色。请将此代码放在下面,应该可以工作,但注意更改 她是代码,如果有人能对它做一些修改,那就太好了,谢谢你

  • 我的Java 8小程序连接到一个SQL数据库,并在一个中显示“SELECT”语句的结果,该语句包含两列: 如果第1/columna行中的字符串与第0/columna行中的字符串不相同,我希望给第1行一个灰色背景色(以标记“新”数据的开始),其他行应该使用默认的白色。 创建表的代码: 获取数据并填充表: 根据我到目前为止的发现,我必须使用一个自定义的来代替我在开始时设置的但是我该如何使用它呢?我发现

  • 我试图弄清楚如何更改JTable中一行中单词的颜色。 例如,这是我的句子,在一行中; dmpsrv日志“2013年3月12日星期二15:33:03”(格林尼治标准时间)(DB=SS@2)pid=662node=“B2-W4”执行时间=1(s) 每一行的结构都是相同的,我想用粗体显示用户名。 但是我不知道我该怎么做?有人给点诡计吗? 谢谢

  • 这听起来可能有点奇怪,但解释我的问题的最好方法就是如标题所述。 我有一个JTable,它使用自定义Tablemodel,在这个Tablemodel我有不同的方法。 我需要一种方法,当我在Tablemodel中调用一个特定的方法时,转到它被添加到的表,并更改位置(X,Y)单元格的背景颜色。 我可以从Tablemodel访问JTable对象。 为了澄清这个问题,有一个使用特定Tablemodel的JT

  • 在 Adobe Photoshop 中,了解如何创建颜色以及如何将颜色彼此关联,这可以帮助您更有效地工作。 了解颜色 了解如何创建颜色以及如何将颜色相互关联可让您在 Photoshop 中更有效率地工作。由于您了解了基本颜色理论,您将能够生成一致的结果,而不是偶然获得某种效果。 原色 加色原色是指三种色光(红色、绿色和蓝色),当按照不同的组合将这三种色光添加在一起时,可以生成可见色谱中的所有颜色。