问题描述
我正在使用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