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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die
isSelected
argument, um zu sehen, wenn die Zelle ausgewählt ist oder nicht, so etwas wie:Die
getTableCellRendererComponent(..., int row, int column)
behandelt jede Zelle einer Zeile. Also, wenn eine Zeile ausgewählt ist, werden alle Zellen, die unter diese Zeile sollte in ausgewählten Zeile-Modus. Sie müssenisSelected()
um zu überprüfen, ob jede Zelle ausgewählt ist oder nicht, da gibt es viele Zellen in einer Tabelle.Perfekt! Macht Sinn und ein copy-n-paste in 3 Sekunden bewiesen, dass es funktioniert.
Ich hatte, um setOpaque(true) auf meinem JLabel, diese zu arbeiten.
InformationsquelleAutor Uhlen
Ich denke, Sie sollten die Standard-Implementierung zunächst:
Die default-Implementierung verarbeitet alle üblichen Argumente wie
isSelected
undhasFocus
legen Sie die text-und Hintergrundfarbe, aktivieren Sie die Fokus-Grenze, etc. Dann ändern Sie den angezeigten text, ändern Sie die Größe der Zellen undreturn this
.Er ist die Verlängerung JTextArea, so dass wird nicht funktionieren... (ich glaube, Sie soll erweitert er DefaultTableCellRenderer)
Hoppla, du hast Recht
InformationsquelleAutor Goblin Alchemist
Mit setSelectionColor(Farbe.GREEN); Sie sagen nur, was Sie ist grün. Was ist dein problem und was erwarten Sie von Ihrem code zu tun?
InformationsquelleAutor Marcos Vasconcelos