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

标签 java swing jtable cell tablecellrenderer

我正在开发一个基于颜色的数据库程序,该程序根据颜色显示住宿内的预订。我一直遇到的问题是该表有 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/

相关文章:

java - 按下按钮时将文本附加到 JTextArea?

java - JInternalFrame 正在延迟加载?

swing - JTable 中的 JSlider

java - 如何编写自定义 DefaultTableCellRenderer 为特定单元格着色, "preserve"为其他单元格着色,Java

java - EL 不会在我的 Bean 中获得我的属性(property)

Java 读取 200 万行文本文件的最快方法

java - 使用Java的K均值聚类

java - 整数到随机数的稳定映射

java - 对 JTable 进行排序后无法获取正确的行 (Swing)

java - 如何在java中的 ListView 中绑定(bind)arraylist