Probleme colorer celule et colone selectionné JTable

profiter Messages postés 211 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 17 déc. 2011 à 15:12
profiter Messages postés 211 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 21 déc. 2011 à 11:46
bonjour,
dans mon JTable , je veux que lorsque je clique sur une cellule : seul la cellule qui se colore pas toute la ligne se colore d'une autre couleur que je preciserai (et dans un autre cas sa ligne et sa colonne), mais toute la ligne se colore par defaut lorsque une de ses cellules sont selectionnés mais la colonne non alors j'ai essayé mais pas de resultat
voila mon code de la classe qui implemente TableCellRenderer:
public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = support.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(alternerLignes){
miseEnFormeAlternee((JLabel)c, isSelected, row);
}
else {
miseEnFormeStandard((JLabel)c, isSelected);	
}
if(row==0 || column==0 ){
c.setBackground(Color.blue);
} 
if(isSelected){
//System.out.println("c : "+value);
c.setBackground(Color.RED);

}
return c;
}

8 réponses

profiter Messages postés 211 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
17 déc. 2011 à 15:13
merci d'avance
0
profiter Messages postés 211 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
18 déc. 2011 à 16:55
pour eclaircir le probleme je veux que seul la cellule selectionné qui soit coloré
pour distinguer bien sa colonne et sa ligne
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
19 déc. 2011 à 08:33
Bonjour,

Je crois reconnaitre ce code non ?

Attend une seconde, je te fais ca.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
19 déc. 2011 à 08:58
Voilà :

import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JTable;


public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTable table = new JTable(new Object[][]{{"11", "12", "13"},{"21", "22", "23"},{"31", "32", "33"}}, new Object[]{"colonne1", "colonne2"});
table.setDefaultRenderer(Object.class, new TableRenderer());
f.add(table);
table.addMouseMotionListener(new MouseMotionListener() {

public void mouseMoved(MouseEvent arg0) {
Point p = arg0.getPoint();

int x = table.rowAtPoint(p);
int y = table.columnAtPoint(p);

table.getSelectionModel().setSelectionInterval(x,x);
table.setColumnSelectionInterval(y,y);

}

public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub

}
});
table.addMouseListener(new MouseListener() {

public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {
table.clearSelection();

}

public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

public void mouseClicked(MouseEvent arg0) {


}
});
f.setSize(200, 200);
f.setLocationRelativeTo(null);
f.setVisible(true);

}

}

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
19 déc. 2011 à 09:02
J'ai oublié la classe TableRenderer :

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

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


public class TableRenderer implements TableCellRenderer {

private DefaultTableCellRenderer support = new DefaultTableCellRenderer();

public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus, int row, int column) {
Component c = support.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(hasFocus){
c.setBackground(Color.RED);
}
else{
c.setBackground(Color.WHITE);
}
return c;
}

}

0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
19 déc. 2011 à 09:03
Tu pourras modifier cette classe comme tu veux pour avoir le rendu que tu souhaites.

Remarques que la cellule colorisée est celle pour laquelle hasfocus est à true.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
20 déc. 2011 à 11:03
Pas de réaction ?
0
profiter Messages postés 211 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
21 déc. 2011 à 11:46
merci pour le code
j'ai trouvé une autre solution pour maitenir la selection sur tous les cellules qu'on veut juste avec :
maTable.setColumnSelectionAllowed(true);
maTable.setRowSelectionAllowed(true);
0
Rejoignez-nous