Java 如何在包含367个单元格的JTable中创建一行,其中只有第一个单元格有文本,其余单元格有颜色

Java 如何在包含367个单元格的JTable中创建一行,其中只有第一个单元格有文本,其余单元格有颜色,java,swing,jtable,cell,tablecellrenderer,Java,Swing,Jtable,Cell,Tablecellrenderer,我正在开发一个基于颜色的数据库程序,根据颜色显示住宿内的预订情况。我遇到的问题是,这个表有367列(住宿的名称,然后是一年中的所有天数)。我遇到的问题是,我不知道如何使行的第一列显示字符串,其余列显示颜色 我做了一个基本的渲染器,应该显示颜色,但我不知道如何使用它 public class MyRenderer extends DefaultTableCellRenderer{ public Component getTableCellRendererComponent(JTable ta

我正在开发一个基于颜色的数据库程序,根据颜色显示住宿内的预订情况。我遇到的问题是,这个表有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我有一个我想显示的标题,但是行应该是空的。然后,当按下一个按钮时,它应该添加一行。这是我能自己做的最后一个按钮,我只是需要你的帮助

此时,我的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中的颜色。因此,在将枚举值传递给表并处理它之前,我将枚举值传递给布尔值的对象。