Bonjour à tous,
Je dois réaliser un planning en java et j'utilise une JTable pour cela, j'ai créé ma JTable et je lui ai associé un model, et un Renderer pour pouvoir afficher les données sous formes de JPanel tout marche parfaitement l'affichage se fait sans souci cependant j'ai un probléme dans la selection des cellules je n'arrive plus à selectionner les cellules... par sélectionner j'entend la bordure de couleur autour ou un changement significatif ... je pense que ca vient de mon Renderer mais j'avoue que je ne sais pas trop comment faire...
Si quelqu'un à un idée merci d'avance, je pense que c'est pas grand chose...
Pour plus d'info voila : ma création de ma JTable:
la déclaration de mon Model contien la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 myModel = new planningModel(tabPoste,tabreserv); jPlanningTable = new JTable(myModel); jPlanningTable.setDefaultRenderer(Reservation.class,new planningRenderer()); jPlanningTable.setCellSelectionEnabled(true); jPlanningTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); TableColumn column = null; TableRow row = null; for (int i = 0; i < this.tabPoste.size(); i++) { column = jPlanningTable.getColumnModel().getColumn(i); column.setPreferredWidth(100); column.setMaxWidth(100); column.setMinWidth(100); column.setResizable(false); }
et mon Renderer est defini de la facon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public boolean isCellEditable(int rowIndex, int columnIndex) { return true; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Reservation r = (Reservation)value; if(r!=null){ String nom = r.getUtilisateur_reservation().getNom(); String prenom = r.getUtilisateur_reservation().getPrenom_utilisateur(); Color couleur = r.getEtat_reservation().getColor_etat(); JPanel panel = new JPanel(); JLabel jLabel1 = new JLabel(); jLabel1.setText(prenom); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setPreferredSize(new java.awt.Dimension(90,16)); JLabel jLabel = new JLabel(); jLabel.setText(nom); jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel.setPreferredSize(new java.awt.Dimension(90,16)); panel.setLayout(new FlowLayout()); panel.setSize(100, 189); panel.add(jLabel, null); panel.add(jLabel1, null); panel.setBackground(couleur); jLabel.setForeground(Color.BLACK); jLabel1.setForeground(Color.BLACK); return panel; } else{ JPanel pan = new JPanel(); pan.setBackground(Color.CYAN); return pan; } }
Partager