如何格式化 JTable 的内容

How to format contents of a JTable

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

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

如有任何帮助,我们将不胜感激。

你的想法是正确的。在自定义 TableCellRenderer 中,您实际上可以检查呈现了哪个 column/row/cell 并随后分配 column/row/cell 特定格式。

 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