我正在开发一个基于颜色的数据库程序,该程序根据颜色显示住宿内的预订。我一直遇到的问题是该表有 367 列(住宿的名称,然后是一年中的所有日子。)我一直遇到的问题是我不知道如何制作第一列该行的部分显示字符串,其余部分显示颜色。
我制作了一个应该显示颜色的基本渲染器,但我不知道如何使用它。
public class MyRenderer extends DefaultTableCellRenderer{
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);
if (! table.isRowSelected(row))
{
if(row == 2 && column == 2)
c.setBackground(new java.awt.Color(0, 0, 255));
else
c.setBackground(table.getBackground());
}
return c;
}
}
我如何将其与 JTable 集成?
PS 我有一个要显示的标题,但行首先应该为空。然后当按下按钮时它应该添加一行。最后一个按钮我可以自己制作,我只需要 cellrenderer 的帮助
目前我的 JTable 初始化如下:JTable table = new JTable();
有人有什么建议吗?
最佳答案
我想一天有两种状态,预订或未预订。所以值
是 boolean 值。您可以按类类型设置渲染器。例如:
table.setDefaultRenderer(Boolean.class, new MyRenderer());
这样,只有当 value
是 boolean 值时,您的渲染器才会被使用。
public class MyRenderer extends DefaultTableCellRenderer{
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);
if(value)
c.setBackground(/*Color for booked days*/ );
else
c.setBackground(table.getBackground());
return c;
}
}
关于java - 如何在 JTable 中创建一行包含 367 个单元格的行,其中只有第一个单元格有文本,其余单元格有颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36494218/