JTable Header mit eigenem Renderer - Rahmen weg...

Florian Strienz

Erfahrenes Mitglied
Hallo zusammen,

ich will die Farbe einiger Spaltenüberschriften meiner JTable ändern. Hierzu habe ich einen eigenen Renderer geschrieben.

Code:
public class OrangeHeaderCellRenderer extends DefaultTableCellRenderer {
	public OrangeHeaderCellRenderer() {
		super();
	}

	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {

		setVerticalAlignment(JLabel.CENTER);
		setHorizontalAlignment(JLabel.CENTER);
		setBackground(Color.ORANGE);
		setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));


		return super.getTableCellRendererComponent(table, value, isSelected,
				hasFocus, row, column);
	}
}

Das Färben klappt auch, aber leider ist dann der Rahmen um die Spalte weg. Mein Versuch den Border einzufügen bringt auch nix. Ich vermute das Problem ist, dass es sich bei meinem Renderer um ein JLabel handelt. Ich habe nur keinen Plan, wie ich das machen soll... Ich hoffe ihr könnt mir helfen.

Gruß&Danke
Flo
 

Anhänge

  • header.png
    header.png
    693 Bytes · Aufrufe: 200
Code:
class OrangeHeaderCellRenderer extends DefaultTableCellHeaderRenderer {
    public OrangeHeaderCellRenderer() {
        super();
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected,
                hasFocus, row, column);
        setVerticalAlignment(JLabel.CENTER);
        setHorizontalAlignment(JLabel.CENTER);
        setBackground(Color.ORANGE);
//        setBorder(BorderFactory.createEtchedBorder());


        return this;
    }
}

hab keine zeit also nur kurz ein beispiel ;-)

PS: beachte extends DefaultTableCellHeaderRenderer
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück