gpt4 book ai didi

java - 根据模型值隐藏 JTable 中的单个单元格

转载 作者:行者123 更新时间:2023-11-29 06:39:03 25 4
gpt4 key购买 nike

我有一个 JTable 显示模型中允许整数值 0、1 和 2 的值。这些值显示在 9 x 9 网格中(类似于数独游戏板)。

我的问题是:如何从 GUI 中隐藏零值?

也就是说,在模型值为零的表格单元格中,我不希望 GUI 显示任何值。但是,由于正在进行计算,模型必须包含零值。

我尝试使用 DefaultTableCellRenderer 并使用 setVisible(true) 将单元格组件设置为不可见(如 this question 中所示),但我没有得到任何结果。

我已设法使用 DefaultTableCellRenderer 根据模型状态(如果单元格被视为“负”)切换任何单元格的背景颜色。 我确实想让背景颜色可见

我对 java 有点陌生,所以也许这只是一个更新问题?

这是我的 DefaultTableCellRenderer:

private static class GameTableRenderer extends DefaultTableCellRenderer
{
private static final long serialVersionUID = 1L;

@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, column);

GameModel model = (GameModel) table.getModel();

if(model.isNegative(row, column))
c.setBackground(Color.lightGray);
else
c.setBackground(Color.white);

if(model.getAbsoluteValueAt(row, column) == 0)
c.setVisible(false);
else
c.setVisible(true);

return c;
}
}

“getAbsoluteValueAt”方法返回一个整数 0、1 或 2。背景颜色的改变非常有效。

我的模型扩展了 AbstractTableModel,而 JTable 像这样使用渲染器:

table.setDefaultRenderer(int.class, renderer);

我希望这些信息足以解释我的问题以及我迄今为止所做的努力。请索取更多信息,我会提供。

提前致谢。/弗雷德里克

最佳答案

或者您可以使用以下内容:

 if(model.getAbsoluteValueAt(row, column) == 0)
c.setForeground(c.getBackground());
else
c.setForeground(Color.BLACK);

关于java - 根据模型值隐藏 JTable 中的单个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15187205/

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