如何格式化JTable的内容

问题描述

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

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

任何帮助将不胜感激。

解决方法

您的想法是正确的。在自定义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,Color.GRAY));
            }

            return c;
        }
 }

请注意,DefaultTableCellRenderer是为每个单独的单元格调用的。

所有可用的格式化功能在相应的文档中都有详细说明: https://docs.oracle.com/javase/10/docs/api/javax/swing/table/DefaultTableCellRenderer.html