自定义渲染器中单元格内容的JTable对齐

时间:2013-11-30 15:55:42

标签: java swing jtable jlabel tablecellrenderer

我想将JTable第一列的内容与中心对齐,但我无法让它工作。如果我在没有自定义渲染器的情况下设置它,那么我就可以使用它,但它会覆盖我正在尝试为行颜色进行的更改。

Eclipse告诉我,类型Component的方法setHorizo​​ntalAlignment未定义,但不会响铃。我缺少什么想法?

final TableCellRenderer renderer = table_1.getDefaultRenderer(Object.class);
    table_1.setDefaultRenderer(Object.class, new TableCellRenderer()    {
      public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
      {
        Component c = renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        c.setBackground(row % 4 == 2 || row % 4 == 3 ? new Color(230,230,230) : Color.WHITE);
        c.setHorizontalAlignment(JLabel.CENTER);
        return c;
      }
    }); 

1 个答案:

答案 0 :(得分:1)

将变量c声明并转换为JLabel:

JLabel c = (JLabel) renderer.getTableCellRendererComponent(...);

DefaultTableCellRenderer的API将向您显示此类实际上源自JLabel,它具有您感兴趣的方法。