【问题标题】:Color specific row by rowid按 rowid 为特定行着色
【发布时间】:2011-08-28 19:25:04
【问题描述】:

我有这样的 JTable

 String[] columnTitles=new String[]{"Command","Offset","Type","Value","Units","R/W"};
        Object[][] data=new Object[20][7];

        for(int i=0;i<ROWS_NUMBER;i++){

            cmbName=RootData.getRootData().getMessageContainer().getComboBoxNameTable();
            cmbOffset=RootData.getRootData().getMessageContainer().getComboBoxOffsetTable();
            txtType=new JTextField();
            txtValue=new JTextField();

            txtUnit=new JTextField();
            cmbRW=new JComboBox(new String[]{"Read","Write"});

            editorsCommand.add(new DefaultCellEditor(cmbName));
            editorsOffset.add(new DefaultCellEditor(cmbOffset));
            editorsType.add(new DefaultCellEditor(txtType));
            editorsValue.add(new DefaultCellEditor(txtValue));

            editorsUnits.add(new DefaultCellEditor(txtUnit));
            editorsRW.add(new DefaultCellEditor(cmbRW));
        }



        for(int i=0;i<20;i++)
            for(int j=0;j<7;j++)
                data[i][j]="";
        DefaultTableModel model=new DefaultTableModel(data,columnTitles);

        this.tblCommands=new JTable(model){
            /**
             * 
             */
            private static final long serialVersionUID = 1L;

            public TableCellEditor getCellEditor(int row, int column)
            {
                int modelColumn = convertColumnIndexToModel( column );

                if (modelColumn == 0 && row < 20)
                    return editorsCommand.get(row);
                else if(modelColumn == 1 && row < 20)
                    return editorsOffset.get(row);
                else if(modelColumn == 2 && row < 20)
                    return editorsType.get(row);
                else if(modelColumn == 3 && row < 20)
                    return editorsValue.get(row);
                else if(modelColumn == 4 && row < 20)
                    return editorsUnits.get(row);
                else if(modelColumn == 5 && row < 20)
                    return editorsRW.get(row);
                else
                    return super.getCellEditor(row, column);
            }

        };


      tblCommands.getColumnModel().getColumn(0).setMinWidth(300);
      System.out.println(model.isCellEditable(0,2));
      spCommand=new JScrollPane(tblCommands);

如何在绿色中为一行敌人示例 row=2 着色?

【问题讨论】:

    标签: java swing jtable renderer


    【解决方案1】:

    典型的方法是让您的 CellRenderer 对象为您需要的行着色: http://download.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

    在 camickr 的回答的第二部分可以找到另一种方法: Is there anyway I can highlight a row in JTable?

    【讨论】:

      【解决方案2】:

      搜索prepareRenderer,例如通过来自JTable change cell colors using TableCellRenderer的trashgod链接Table Row Rendering

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 2022-01-12
          • 1970-01-01
          • 2018-04-04
          • 1970-01-01
          • 1970-01-01
          • 2013-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多