Java 如何在包含367个单元格的JTable中创建一行,其中只有第一个单元格有文本,其余单元格有颜色
我正在开发一个基于颜色的数据库程序,根据颜色显示住宿内的预订情况。我遇到的问题是,这个表有367列(住宿的名称,然后是一年中的所有天数)。我遇到的问题是,我不知道如何使行的第一列显示字符串,其余列显示颜色 我做了一个基本的渲染器,应该显示颜色,但我不知道如何使用它Java 如何在包含367个单元格的JTable中创建一行,其中只有第一个单元格有文本,其余单元格有颜色,java,swing,jtable,cell,tablecellrenderer,Java,Swing,Jtable,Cell,Tablecellrenderer,我正在开发一个基于颜色的数据库程序,根据颜色显示住宿内的预订情况。我遇到的问题是,这个表有367列(住宿的名称,然后是一年中的所有天数)。我遇到的问题是,我不知道如何使行的第一列显示字符串,其余列显示颜色 我做了一个基本的渲染器,应该显示颜色,但我不知道如何使用它 public class MyRenderer extends DefaultTableCellRenderer{ public Component getTableCellRendererComponent(JTable ta
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我有一个我想显示的标题,但是行应该是空的。然后,当按下一个按钮时,它应该添加一行。这是我能自己做的最后一个按钮,我只是需要你的帮助
此时,我的JTable是这样初始化的:JTable table=new JTable()代码>
有人有什么建议吗?我想一天有两种状态,预订与否。因此,值
是布尔值。可以按类类型设置渲染器。例如:
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.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;
}
}
将所需信息放置在表格模型中
,提供一个自定义表格单元渲染器
,该渲染器接受值
,并转换为所需颜色,将背景设置为,并将所需信息放置在表格模型中
,提供一个自定义的TableCellRenderer
,它接受值
并转换为所需的颜色,并将背景设置为一种颜色,根据预订人数的不同,会有一些颜色,因此我只会使用int?您可以在不同的情况下使用enum
<代码>公共枚举RoomState{可用、已预订、已预订2}
并根据状态决定cellrenderer中的颜色。因此,我将一个枚举值传递给对象,该对象是布尔值,然后再将枚举值传递给表并处理它。将有一些颜色取决于预订的人数,因此我将只使用int来代替。您可以使用枚举
来处理不同的属性情况public enum RoomState{available,BOOKED,BOOKED2}
并根据状态决定cellrenderer中的颜色。因此,在将枚举值传递给表并处理它之前,我将枚举值传递给布尔值的对象。