Supprimer la bordure des cellules dans un jtable
-
02-10-2019 - |
Question
J'ai mon sur CellRenderer personnalisée et que vous souhaitez supprimer la bordure de la cellule.
Comment puis-je le faire? J'ai essayé setBorder mais il ne fonctionne pas.
Voici mon code renderer:
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;
}
}
La solution
Les lignes tracées entre les cellules ne font pas partie des cellules elles-mêmes. Ils sont attirés par la table. Vous pouvez les désactiver pour la table entière avec:
table.setShowGrid(false);
Pour désactiver simplement le rapport à l'horizontale ou seulement les lignes verticales:
table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);
Ou, vous pouvez changer la couleur des lignes avec:
table.setGridColor(color)
Autres conseils
Je ne sais pas comment, depuis que composants Swing vos compiles de code peut avoir une bordure et la classe de composants ne dispose pas d'une méthode setBorder ().
Quand j'Override la valeur par défaut que j'utilise renderer quelque chose comme:
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;
}
}