【问题标题】:How to format contents of a JTable如何格式化 JTable 的内容
【发布时间】:2020-10-23 14:05:26
【问题描述】:

我正在使用 JTable 来显示数字数据和字符串。 JTable 右侧的数字数据默认格式,左侧的字符串格式。我希望两者都被格式化到单元格的中心。我正在使用 Nedbeans 开发 GUI,但它似乎对解决这个问题没有帮助。

我的尝试是创建一个覆盖 JTable 默认单元格渲染器的单元格渲染器类,但我 不知道在新的单元格渲染器中实际更改格式的代码行。

任何帮助将不胜感激。

【问题讨论】:

    标签: java swing formatting jtable


    【解决方案1】:

    你的想法是正确的。在自定义 TableCellRenderer 中,您实际上可以检查渲染了哪个列/行/单元格,然后分配一个列/行/单元格特定格式。

     public static class CustomTableCellRenderer extends DefaultTableCellRenderer {    
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                DefaultTableCellRenderer c = (DefaultTableCellRenderer) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    
                // center everything in the first column
                if (column == 0) {
                    c.setHorizontalAlignment(JLabel.CENTER);
                }
    
                // the background and border of the first cell should be gray
                if (column == 0 && row == 0) {
                    c.setBackground(Color.GRAY);
                    c.setBorder(BorderFactory.createMatteBorder(0, 5, 0, 5, Color.GRAY));
                }
    
                return c;
            }
     }
    

    请注意,每个单元格都会调用DefaultTableCellRenderer

    所有可用的格式化函数在各自的文档中都有很好的描述: https://docs.oracle.com/javase/10/docs/api/javax/swing/table/DefaultTableCellRenderer.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2018-10-23
      相关资源
      最近更新 更多