den
den

Reputation: 1

Jtable, use different alignment for each ROW

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); 

Upvotes: 0

Views: 586

Answers (2)

camickr
camickr

Reputation: 324108

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.

Upvotes: 1

David Lavender
David Lavender

Reputation: 8311

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.

Upvotes: 1

Related Questions