如何在具有 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;
   } 
}