如何在具有 367 个单元格的 JTable 中创建一行,其中只有第一个单元格有文本,其余单元格有颜色
How to make a row in JTable with 367 cells where only the first one has text and the rest have colors
我正在开发一个基于颜色的数据库程序,该程序可以根据颜色显示住宿内的预订情况。我一直遇到的问题是 table 有 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 我有一个 header 我想展示,但开始时行应该是空的。然后当按下按钮时,它应该添加一行。最后一个按钮我可以自己做 我只需要 cellrenderer 的帮助
目前我的 JTable 初始化如下:JTable table = new JTable();
有人有什么建议吗?
我想一天有两种状态,预订与否。所以 value
是布尔值。您可以按 class 类型设置渲染器。例如:
table.setDefaultRenderer(Boolean.class, new MyRenderer());
只有当 value
是布尔值时,您的渲染器才会被使用。
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;
}
}
我正在开发一个基于颜色的数据库程序,该程序可以根据颜色显示住宿内的预订情况。我一直遇到的问题是 table 有 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 我有一个 header 我想展示,但开始时行应该是空的。然后当按下按钮时,它应该添加一行。最后一个按钮我可以自己做 我只需要 cellrenderer 的帮助
目前我的 JTable 初始化如下:JTable table = new JTable();
有人有什么建议吗?
我想一天有两种状态,预订与否。所以 value
是布尔值。您可以按 class 类型设置渲染器。例如:
table.setDefaultRenderer(Boolean.class, new MyRenderer());
只有当 value
是布尔值时,您的渲染器才会被使用。
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;
}
}