【问题标题】:Change row Background in JTable Java在 JTable Java 中更改行背景
【发布时间】:2012-07-15 12:19:24
【问题描述】:

我的项目中有一个名为tasktable 的表。它从数据库(oracle)中检索数据。如何更改单元格中具有颜色的行的颜色 ex。 (i,8) 当我点击刷新按钮时自动?

我已经尝试了很多次将该源代码放在特定行上,但它最终为所有表格着色:

          int count;      
          count = tasktable.getRowCount();
         for (int i=0;i<count;i++)
            { 
                  rr = new Object ();
                   rr = tasktable.getModel().getValueAt(i,8);
                   if(rr.equals("GREEN"))
                   {
                 setBackground(Color.GREEN);
                   }
                    if(rr.equals("red"))
                   {
                       setBackground(Color.red);
                   }
                     if(rr.equals("BLUE"))
                   {
                      setBackground(Color.BLUE);
                   }
                      if(rr.equals("yellow"))
                   {
                     setBackground(Color.yellow);
                   }
                       if(rr.equals("pink"))
                   {
                     setBackground(Color.pink);
                   }
                       if(rr.equals(null))
                   {
                     setBackground(null);
                   }

如何帮助我解决这个问题?

【问题讨论】:

标签: java swing


【解决方案1】:

将自定义 TableCellRenderer 添加到您的表中。

【讨论】:

    【解决方案2】:

    setBackground() 设置JTable 的背景颜色,而不是每行或单元格的背景颜色。正如@Recursed 所说,您需要TableCellRenderer。

    【讨论】:

      【解决方案3】:
       Component comp = super.getTableCellRendererComponent(
                        table,  value, isSelected, hasFocus, row, col);
      
       String s =  table.getModel().getValueAt(row, VALIDATION_COLUMN ).toString();
       comp.setForeground(Color.red);
      

      http://www.java-forums.org/awt-swing/541-how-change-color-jtable-row-having-particular-value.html

      【讨论】:

        【解决方案4】:

        如果您所做的只是更改行颜色,请将您的 JTable 子类化并覆盖 prepareRenderer 方法:

        public Component prepareRenderer(TableCellRenderer renderer,
                                     int row,
                                     int column) {    
             Component c = super.prepareRenderer(renderer, row, column);
             if (row == HIGHLIGHT_ROW) {
                  c.setBackground(BG_COLOR); 
             }
             return c;
        }
        

        【讨论】:

        • 我尝试编写您的代码,但它向我显示此错误找不到符号符号:方法 prepareRenderer(javax.swing.table.TableCellRenderer,int,int)
        • 嗯...我需要更多信息来告诉你更多关于哪里出了问题。完整的错误信息是什么?您尝试运行的代码是什么?
        猜你喜欢
        • 2011-04-21
        • 2013-09-03
        • 2015-10-24
        • 1970-01-01
        • 2012-01-02
        • 1970-01-01
        • 2011-11-07
        • 2014-09-10
        • 2011-09-24
        相关资源
        最近更新 更多