使用另一个类和方法

时间:2017-10-25 08:44:15

标签: java swing jtable

主要课程:

public static void main(String args[]) {
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
               new NewMDIApplication().setVisible(true); 
               new TestTable();
            }
        });
    }

 public JTable getMyJTable() {
      return jTable2;
   }

其他课程

package javaapplication9;

import java.awt.Color;
import javax.swing.table.DefaultTableModel;

 public class TestTable extends NewMDIApplication {
   public NewMDIApplication obj=new NewMDIApplication();
     public TestTable() {
                final DefaultTableModel model = (DefaultTableModel) obj.getMyJTable().getModel();
                obj.getMyJTable().setModel(model);
                obj.getMyJTable().setDefaultRenderer(obj.getMyJTable().getClass(), new MyCellRenderer());
               }

    public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer {
            public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            final java.awt.Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            Object val = table.getValueAt(row, 1);
            String sval = val.toString();
            if (sval.equalsIgnoreCase("A")) {
                cellComponent.setForeground(Color.black);
                cellComponent.setBackground(Color.red);

            } else {
                cellComponent.setBackground(Color.white);
                cellComponent.setForeground(Color.black);
            }
            if (isSelected) {
                cellComponent.setForeground(table.getSelectionForeground());
                cellComponent.setBackground(table.getSelectionBackground());
            }

            return cellComponent;
        }
    }
  }

此程序正在运行....但未显示任何错误。但是当我通过组合框编辑表的某些数据时,表的颜色在运行时不会改变。

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

JTable单元有两个方面:渲染器和编辑器。渲染器用于显示单元格,编辑单元格时使用编辑器。您已完成渲染器,但不是编辑器。

为JTable提供一个编辑器,该编辑器以与渲染器相同的方式为编辑的单元格着色。例如。通过JTable.setDefaultEditor(Class<?> columnClass, TableCellEditor editor)方法。