gpt4 book ai didi

java - 从 MySQL 添加行时更改 JTable 的整个行颜色

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:11 30 4
gpt4 key购买 nike

我有一个如下所示的 JPanel

enter image description here

事务表(右)中的数据是当用户在绘图表(左)中选择一行时从 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,它只会将“已验证”列更改为绿色,然后它不会不管该值是真还是假,它始终为绿色。此外,复选框现在变为真/假。

enter image description here

最佳答案

I would like to change the colour of the rows to GREEN if the 'Verified' column is ticked

查看 Table Row Rendering .

它展示了如何覆盖 JTableprepareRenderer(...) 方法,以根据行中的数据为整行着色。

覆盖此方法的基本结构如下:

JTable table = new JTable(...)
{
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);

// add custom rendering here

return c;
}
};

关于java - 从 MySQL 添加行时更改 JTable 的整个行颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621284/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com