Bonjour .
je veux réaliser une application gestion des salles avec des emploi du temps .j'ai crée la Table 'classes' dans la base de données avec les champs : idseance, idsalle ,IdProf, idmodule, day, 8H (type boolean),10H (type boolean),14h,16H. il m'affiche ça :
Nom : Capture.PNG
Affichages : 1122
Taille : 14,7 Ko

la Classe Fenetre :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
 
import java.awt.BorderLayout;
import java.awt.Component;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
 
public class Fenetre extends JFrame {
    private Statement st = null;
    private ResultSet rs; 
  private JTable tableau;
         connection con=new connection();
 
  public Fenetre() throws SQLException{
      st=con.getStatement();
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setTitle("Emploi de Temps");
    this.setSize(700, 500);
 
            Object[][] data= new Object[5][4] ;
            String Sql="Select * from seance";
             rs=st.executeQuery(Sql);
 
            while(rs.next()) {
                switch (rs.getString("jour")){
                    case "lundi":
                        if (rs.getBoolean("8")){
                           data[0][0] = rs.getInt("Idmodule");                         
                        }else{data[0][0] = new JButton("Ajouter"); }
                        if (rs.getBoolean("10")){
                         data[0][1] = rs.getInt("Idmodule");   
                         }else { data[0][1] = new JButton("Ajouter");}
                         if(rs.getBoolean("14")){
                      data[0][2] = rs.getInt("Idmodule");   
                        }else {data[0][2] =new JButton("Ajouter"); }
                             if(rs.getBoolean("16")){
                      data[0][3] = rs.getInt("Idmodule");   
                        }else {data[0][3] =new JButton("Ajouter") ;}
 
                    break;
                    case "mardi" :
                     if (rs.getBoolean("8")){
                           data[1][0] = rs.getInt("Idmodule");                                                             
                        }else {data[1][0] = new JButton("Ajouter");}
                         if(rs.getBoolean("10")){
                         data[1][1] = rs.getInt("Idmodule");   
                         }else {data[1][1] = new JButton("Ajouter");}
                             if(rs.getBoolean("14")){
                      data[1][2] = rs.getInt("Idmodule");   
                        }else {data[1][2] = new JButton("Ajouter");}
                                 if(rs.getBoolean("16")){
                      data[1][3] = rs.getInt("Idmodule");   
                        }  else {data[1][3] = new JButton("Ajouter");}                  
                }
            }
 
        String[] title = {"8h_10h","10h_12h"," 14h_16h","16h_18h"};
    ZModel model = new ZModel(data, title);
    this.tableau = new JTable(model);
    changeSize(80, 80);
    this.getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);      
    this.tableau.setDefaultRenderer(JButton.class, new TableComponent());
  }
  ////////////////////////////////////////////////////////////////////////////////////
     public void changeSize(int width, int height){
    //Nous créons un objet TableColumn afin de travailler sur notre colonne
    TableColumn col;
    for(int i = 0; i < tableau.getColumnCount(); i++){    
        //On récupère le modèle de la colonne
        col = tableau.getColumnModel().getColumn(i);
        //On lui affecte la nouvelle valeur
        col.setPreferredWidth(width);
    }            
    for(int i = 0; i < tableau.getRowCount(); i++){
      //On affecte la taille de la ligne à l'indice spécifié !
        tableau.setRowHeight(i, height);
      }
    } 
     //////////////////////////////////////////////////////////////
  //Classe modèle personnalisée
  class ZModel extends AbstractTableModel{
    private Object[][] data;
    private String[] title;
 
    //Constructeur
    public ZModel(Object[][] data, String[] title){
      this.data = data;
      this.title = title;
    }
 
    //Retourne le nombre de colonnes
    public int getColumnCount() {
      return this.title.length;
    }
 
    //Retourne le nombre de lignes
    public int getRowCount() {
      return this.data.length;
    }
 
    //Retourne la valeur à l'emplacement spécifié
    public Object getValueAt(int row, int col) {
      return this.data[row][col];
    } 
    public String getColumnName(int col) {
    return this.title[col];
    } public Class getColumnClass(int col){
    //On retourne le type de la cellule à la colonne demandée
    //On se moque de la ligne puisque les types de données sont les mêmes quelle que soit la ligne
    //On choisit donc la première ligne
    return this.data[0][col].getClass();
    }  
    //Retourne vrai si la cellule est éditable : celle-ci sera donc éditable
    public boolean isCellEditable(int row, int col){
        if(getValueAt(0, col) instanceof JButton)
    return false;
    return true;
 
    }  
  } 
}
la classe TableComponent :
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
 
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
 
  public class TableComponent extends DefaultTableCellRenderer implements TableCellRenderer{
 
  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    //Si la valeur de la cellule est un JButton, on transtype cette valeur
      setText((value != null) ? value.toString() : "Ajouter");
    if (value instanceof JButton)
      return (JButton) value;
    else
      return this;
  }
}
le Problème que les Buttons sont pas active (no cliquable ) et le champs de ligne 2 1 pas de bouton .
merci ^_^ ;