0

I have created a table and need to align every second row to the right, and every other row to default.

I understand how to align the rows. This is my default renderer

final DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); 
final DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT); 
mKorbel
  • 109,525
  • 20
  • 134
  • 319
den
  • 1
  • 1

2 Answers2

1

You'll have to tweak the renderer a little and override its getTableCellRendererComponent method. Something like:

DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        if (r % 2 == 0) {
            setHorizontalAlignment(SwingConstants.LEFT);
        }
        else {
            setHorizontalAlignment(SwingConstants.RIGHT);
        }
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
};

Although creating your own proper class that extends DefaultTableCellRenderer and does this would be a better approach.

David Lavender
  • 8,021
  • 3
  • 35
  • 55
1

See Table Row Rendering.

This will allow you to change the alignment in one place even if your table uses multiple renderers and without creating a custom renderer.

camickr
  • 321,443
  • 19
  • 166
  • 288