Frage

Ich habe meine auf benutzerdefinierten CellRenderers und wollen die Grenze der Zelle entfernen.
Wie kann ich es tun? Ich habe versucht, setBorder aber es funktioniert nicht.

Hier ist mein Renderer Code:

public class MyTableCellRenderer extends DefaultTableCellRenderer {

    private static final long serialVersionUID = -1195682136616306875L;

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        Component c = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, column);
        if (!isSelected) {
            if (row % 2 == 0 && row != 1) {
                c.setBackground(new Color(255, 255, 150));
            } else {
                c.setBackground(Color.WHITE);
            }
        } else {
            c.setBackground(new Color(255, 230, 255));
        }
        c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        return c;
    }
}
War es hilfreich?

Lösung

Die Linien zwischen den Zellen gezogen sind nicht Teil der Zellen selbst. Sie werden durch den Tisch gezogen. Sie können sie für die gesamte Tabelle ausschalten mit:

table.setShowGrid(false);

Um nur die die horizontalen zu deaktivieren oder nur die vertikalen Linien:

table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);

Oder Sie können die Farbe der Linien ändern mit:

table.setGridColor(color)

Andere Tipps

Ich weiß nicht, wie Ihr Code kompiliert nur da Komponenten Schwingen eine Grenze und die Komponentenklasse keinen setBorder () Methode hat.

Wenn ich die Standardeinstellung überschreiben Renderer ich etwas verwenden wie:

Class CustomRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED));
        return this;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top