主要课程:
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;
}
}
}
此程序正在运行....但未显示任何错误。但是当我通过组合框编辑表的某些数据时,表的颜色在运行时不会改变。
这个问题的解决方案是什么?
答案 0 :(得分:0)
JTable单元有两个方面:渲染器和编辑器。渲染器用于显示单元格,编辑单元格时使用编辑器。您已完成渲染器,但不是编辑器。
为JTable提供一个编辑器,该编辑器以与渲染器相同的方式为编辑的单元格着色。例如。通过JTable.setDefaultEditor(Class<?> columnClass, TableCellEditor editor)
方法。