Pourquoi mon rendu de cellule personnalisé Java n'affiche pas la surbrillance lorsque la ligne / cellule est sélectionnée?
J'ai un rendu de cellule personnalisé pour une cellule de faire un retour à la ligne, donc plus de contenu peut être lu. Voici le 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;
}
}
Mise à jour: Le rendu de cellule est utilisé correctement, mais lorsque l'utilisateur sélectionne une ligne dans la JTable, alors il ne montre que la mise en évidence de la non-personnalisé cellules rendus. La mise en évidence des spectacles pour toutes les autres cellules de la ligne. Cela laisse juste une cellule avec un fond blanc, alors que le reste de la ligne a du bleu (dans mon cas) comme l'a souligné couleur d'arrière-plan.
source d'informationauteur Brian T Hannan
Vous devez vous connecter pour publier un commentaire.
Vous avez pour vérifier la
isSelected
argument pour voir si la cellule est sélectionnée ou non, quelque chose comme:Je pense que vous devriez appeler le défaut de mise en œuvre de la première:
Le défaut de mise en œuvre, permettra de traiter tous les arguments habituels tels que
isSelected
ethasFocus
le texte et la couleur d'arrière-plan, activer le focus de la frontière etc. Ensuite, vous pourrez modifier le texte affiché à l'écran, changer la taille de la cellule etreturn this
.À l'aide de setSelectionColor(de Couleur.VERT); vous dites juste ce que l'utilisateur de sélectionner les est vert. Quel est votre problème et ce que vous attendez de votre code pour le faire?