Grosse MàJ
This commit is contained in:
Binary file not shown.
BIN
workspace/RequeteSimple/fr/blankoworld/donnees/JTableModel.class
Normal file
BIN
workspace/RequeteSimple/fr/blankoworld/donnees/JTableModel.class
Normal file
Binary file not shown.
223
workspace/RequeteSimple/fr/blankoworld/donnees/JTableModel.java
Normal file
223
workspace/RequeteSimple/fr/blankoworld/donnees/JTableModel.java
Normal file
@ -0,0 +1,223 @@
|
||||
package fr.blankoworld.donnees;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.GridLayout;
|
||||
|
||||
import fr.blankoworld.connexionBDD.Connexion;
|
||||
|
||||
public class JTableModel extends JPanel {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// Utilise pour le debugage, lors de l'insertion de donnees (modification)
|
||||
// private boolean DEBUG = false;
|
||||
|
||||
public JTableModel(Connexion connectionObject, String requete) {
|
||||
super(new GridLayout(1,0));
|
||||
|
||||
JTable table = new JTable(new MyTableModel(connectionObject, requete));
|
||||
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
|
||||
table.setFillsViewportHeight(true);
|
||||
|
||||
// Ajout de la table dans un panneau deroulant.
|
||||
JScrollPane scrollPane = new JScrollPane(table);
|
||||
|
||||
//Ajout du panneau deroulant dans ce panneau ci.
|
||||
add(scrollPane);
|
||||
}
|
||||
|
||||
class MyTableModel extends AbstractTableModel {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String[] columnNames;
|
||||
private Object[][] data;
|
||||
|
||||
public MyTableModel(Connexion connectionObject, String requete){
|
||||
ResultSet resultat = connectionObject.getQueryResult();
|
||||
|
||||
try {
|
||||
// On catalogue l'ensemble des donnees relatives a la table resultante (pas le contenu mais les donnees de colonnes, et le nombre de lignes)
|
||||
ResultSetMetaData rsmd = resultat.getMetaData();
|
||||
|
||||
// Nombre de colonnes (Commence a 1 !)
|
||||
int i = rsmd.getColumnCount();
|
||||
|
||||
// Donner les entetes de colonnes
|
||||
String[] enteteColonnes = new String[i];
|
||||
for (int j = 1; j < i + 1; j++) {
|
||||
enteteColonnes[j - 1] = rsmd.getColumnName(j);
|
||||
}
|
||||
|
||||
// Nombre de lignes
|
||||
int nbreLigne = 0;
|
||||
while (resultat.next()){
|
||||
nbreLigne++;
|
||||
}
|
||||
|
||||
// Tableau de donnees
|
||||
Object[][] tableauDonnees = new Object[nbreLigne][i];
|
||||
for(int ligne = 0; ligne < nbreLigne; ligne++){
|
||||
for(int colonne = 0; colonne < i; colonne++){
|
||||
tableauDonnees[ligne][colonne] = "";
|
||||
}
|
||||
}
|
||||
|
||||
//On refait la requete qui semble avoir fonctionne la premiere fois
|
||||
connectionObject.sendQuery(requete);
|
||||
ResultSet donnees = connectionObject.getQueryResult();
|
||||
|
||||
// Incrementeur de ligne
|
||||
int incrementeur = 0;
|
||||
|
||||
while (donnees.next()) {
|
||||
//traitement des autres lignes
|
||||
for (int j = 1; j < i + 1; j++) {
|
||||
tableauDonnees[incrementeur][j - 1] = donnees.getObject(j);
|
||||
}
|
||||
incrementeur++;
|
||||
}
|
||||
|
||||
columnNames = enteteColonnes;
|
||||
data = tableauDonnees;
|
||||
|
||||
} catch (SQLException e) {
|
||||
// On remplit par des tableaux vides
|
||||
columnNames = null;
|
||||
data = null;
|
||||
}
|
||||
|
||||
// // Jeux de tests (pour voir si cela fonctionne)
|
||||
// columnNames = new String[] {"First Name",
|
||||
// "Last Name",
|
||||
// "Sport",
|
||||
// "# of Years",
|
||||
// "Vegetarian"};
|
||||
//
|
||||
// data = new Object[][] {
|
||||
// {"Mary", "Campione",
|
||||
// "Snowboarding", new Integer(5), new Boolean(false)},
|
||||
// {"Alison", "Huml",
|
||||
// "Rowing", new Integer(3), new Boolean(true)},
|
||||
// {"Kathy", "Walrath",
|
||||
// "Knitting", new Integer(2), new Boolean(false)},
|
||||
// {"Sharon", "Zakhour",
|
||||
// "Speed reading", new Integer(20), new Boolean(true)},
|
||||
// {"Philip", "Milne",
|
||||
// "Pool", new Integer(10), new Boolean(false)}
|
||||
// };
|
||||
}
|
||||
|
||||
public int getColumnCount() {
|
||||
return columnNames.length;
|
||||
}
|
||||
|
||||
public int getRowCount() {
|
||||
return data.length;
|
||||
}
|
||||
|
||||
public String getColumnName(int col) {
|
||||
return columnNames[col];
|
||||
}
|
||||
|
||||
public Object getValueAt(int row, int col) {
|
||||
return data[row][col];
|
||||
}
|
||||
|
||||
/*
|
||||
* Commentaire donne par Sun, concernant les prochaines methodes
|
||||
* JTable uses this method to determine the default renderer/
|
||||
* editor for each cell. If we didn't implement this method,
|
||||
* then the last column would contain text ("true"/"false"),
|
||||
* rather than a check box.
|
||||
*/
|
||||
public Class getColumnClass(int c) {
|
||||
return getValueAt(0, c).getClass();
|
||||
}
|
||||
|
||||
/*
|
||||
* Don't need to implement this method unless your table's
|
||||
* editable.
|
||||
*/
|
||||
// public boolean isCellEditable(int row, int col) {
|
||||
// //Note that the data/cell address is constant,
|
||||
// //no matter where the cell appears onscreen.
|
||||
// if (col < 2) {
|
||||
// return false;
|
||||
// } else {
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
|
||||
/*
|
||||
* Don't need to implement this method unless your table's
|
||||
* data can change.
|
||||
*/
|
||||
// public void setValueAt(Object value, int row, int col) {
|
||||
// if (DEBUG) {
|
||||
// System.out.println("Setting value at " + row + "," + col
|
||||
// + " to " + value
|
||||
// + " (an instance of "
|
||||
// + value.getClass() + ")");
|
||||
// }
|
||||
//
|
||||
// data[row][col] = value;
|
||||
// fireTableCellUpdated(row, col);
|
||||
//
|
||||
// if (DEBUG) {
|
||||
// System.out.println("New value of data:");
|
||||
// printDebugData();
|
||||
// }
|
||||
// }
|
||||
|
||||
// private void printDebugData() {
|
||||
// int numRows = getRowCount();
|
||||
// int numCols = getColumnCount();
|
||||
//
|
||||
// for (int i=0; i < numRows; i++) {
|
||||
// System.out.print(" row " + i + ":");
|
||||
// for (int j=0; j < numCols; j++) {
|
||||
// System.out.print(" " + data[i][j]);
|
||||
// }
|
||||
// System.out.println();
|
||||
// }
|
||||
// System.out.println("--------------------------");
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the GUI and show it. For thread safety,
|
||||
* this method should be invoked from the
|
||||
* event-dispatching thread.
|
||||
*/
|
||||
// private static void createAndShowGUI() {
|
||||
// //Create and set up the window.
|
||||
// JFrame frame = new JFrame("TableDemo");
|
||||
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
//
|
||||
// //Create and set up the content pane.
|
||||
// JTableModel newContentPane = new JTableModel();
|
||||
// newContentPane.setOpaque(true); //content panes must be opaque
|
||||
// frame.setContentPane(newContentPane);
|
||||
//
|
||||
// //Display the window.
|
||||
// frame.pack();
|
||||
// frame.setVisible(true);
|
||||
// }
|
||||
//
|
||||
// public static void main(String[] args) {
|
||||
// //Schedule a job for the event-dispatching thread:
|
||||
// //creating and showing this application's GUI.
|
||||
// javax.swing.SwingUtilities.invokeLater(new Runnable() {
|
||||
// public void run() {
|
||||
// createAndShowGUI();
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
}
|
Reference in New Issue
Block a user