Search code examples
javaswingjtabletablecellrenderer

How to edit DefualtTableCellRenderer in Java?


I am having a problem with editing the DefaultTableCellRenderer.

I would like to right align just the 2nd column in my table. However, the code below right aligns all the columns, and not just the 2nd one!

Can anyone see where I am going wrong?

for (int i=0; i < tblMenu.getModel().getColumnCount(); i++) 
{ 
    DefaultTableCellRenderer renderer = 
        (DefaultTableCellRenderer) tblMenu.getCellRenderer(i, 1);

    renderer.setHorizontalAlignment(JTextField.RIGHT); 
}

Solution

  • You can override the default renderer on your table with an anonymous inner class. Something like the following (untested) code might work:

    table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                if (column == 2) {
                    setHorizontalAlignment(JTextField.RIGHT);
                }
                return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            }
    
        });