【发布时间】:2016-12-01 22:55:56
【问题描述】:
我有一个像下面这样的 JPanel
当用户在绘图表(左)中选择一行时,事务表(右)中的数据是从 MySQL 结果集中生成的。代码如下:
tableModelTran.getDataVector().removeAllElements();
if (rs.isBeforeFirst()) {
while (rs.next()) {
java.util.Vector data = new java.util.Vector();
data.add(rs.getString(1));
data.add(rs.getString(2));
data.add(new java.text.SimpleDateFormat("dd/MM/yyyy").format(rs.getDate(3)));
data.add(String.valueOf(new java.text.SimpleDateFormat("MMMM yyyy").format(rs.getDate(3))).toUpperCase());
data.add(rs.getString(4));
data.add(rs.getString(5));
data.add(rs.getString(6));
data.add(rs.getBoolean(7));
tableModelTran.addRow(data);
}
performTotals();
}
如果勾选了“已验证”列,我想将行的颜色更改为绿色,如果没有勾选,则保持不着色。此外,如果用户更改列的值,颜色应该相应更新。感谢您提供任何和所有帮助。
编辑:
我创建了一个类并将其添加到我的构造函数中,如下所示:
static class ColorRenderer extends javax.swing.table.DefaultTableCellRenderer {
@Override
public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
java.awt.Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value.equals(true)) {
c.setBackground(java.awt.Color.GREEN);
}
return c;
}
public PlotDetailsWindow() {
initComponents();
....
....
transactionTable.setDefaultRenderer(Boolean.class, new ColorRenderer());
....
....
}
现在,每当我单击左侧表格中的选择一行时,如果第一个值为 false,它不会更改颜色,但如果为 true,它只会将“已验证”列更改为绿色,然后它不会不管值是真还是假,它总是绿色的。此外,复选框现在变为真/假。
【问题讨论】: