Warum funktioniert mein Java benutzerdefinierter Zellen-renderer nicht anzeigen markieren, wenn die Zeile/Zelle markiert ist?

Habe ich ein benutzerdefinierter Zellen-renderer für die Zelle zu tun, ein Zeilenumbruch, damit mehr Inhalte gelesen werden können. Hier ist der code:

import java.awt.Color;
import java.awt.Component;
import java.awt.Insets;

import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;

public class TextWrapCellRenderer extends JTextArea implements TableCellRenderer {
    private static final long serialVersionUID = 1L;

    public TextWrapCellRenderer() {
        setLineWrap(true);
        setWrapStyleWord(true);
        setMargin(new Insets(0, 5, 0, 5));
        setSelectionColor(Color.GREEN);
    }

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        setText((String)value);
        setSize(table.getColumnModel().getColumn(column).getWidth(),getPreferredSize().height);
        setSelectionColor(Color.GREEN);

        return this;
    }
}

Update: Die cell-renderer verwendet wird, richtig, aber wenn der Benutzer eine Zeile in der JTable, dann zeigt es nur die Markierung für die nicht angepassten Zellen gerendert. Die Hervorhebung zeigt an, für alle anderen Zellen dieser Zeile obwohl. Dies lässt nur eine einzige Zelle mit einem weißen hintergrund, während der rest der Zeile ist blau (in meinem Fall) als Hintergrundfarbe hervorgehoben.

Sieht aus wie ich möglicherweise in der Lage sein zu verwenden JTable ist setSelectionBackground() oder nehmen Sie die Auswahl hintergrund mit getSelectionBackground() und stellen Sie die ausgewählte Zelle im hintergrund die benutzerdefinierte CellRenderer-code.

InformationsquelleAutor Brian T Hannan | 2011-04-05

Schreibe einen Kommentar