1 pièce(s) jointe(s)
Problème d'alignement vertical
Bonjour à tous, je suis très débutant dans le JAVA, j'aimerais donc comprendre (si possible) mon erreur.
J'ai fait un petit programme (que j'ai déjà réalisé en PHP donc pas de soucis pour ça) Mais je voudrais (là ou mon soucis me pose problème) afficher une table MySQL que j'aurais récupéré et afficher en dessous le retour de MySQL. Le problème c'est que ça m'affiche tout sur la même ligne. Voici le code + une capture d'écran :
Code:
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 130 131 132 133 134 135 136 137
| package eu.skydrum;
import java.awt.BorderLayout;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import com.sdz.connection.SdzConnection;
public class Fenetre extends JFrame {
/**
* Le conteneur de résultat
*/
private JPanel result = new JPanel();
/**
* Le conteneur Du formulaire
*/
private JPanel form = new JPanel();
/**
* Split
*/
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT, result, form);
/**
* Création de notre conteneur d'onglets
*/
JTabbedPane onglet = new JTabbedPane();
/**
* Requête par défaut pour le démarrage
*/
private String requete = "SELECT * FROM Batteurs";
/**
* Bouton de validation
*/
private JButton boutton = new JButton("Envoyer");
public Fenetre(){
setSize(900, 600);
setTitle("Liste des Batteurs enregistrés");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
initOnglets();
initTable(requete);
setVisible(true);
setLocationRelativeTo(null);
}
public void initOnglets(){
//Création de notre conteneur d'onglets
JTabbedPane onglet = new JTabbedPane();
//Méthode d'ajout d'onglet
onglet.add("Liste des Batteurs", result);
onglet.add("Quizz", form);
getContentPane().add(onglet);
}
public void initTable(String query){
try {
//On crée un statement
long start = System.currentTimeMillis();
Statement state = SdzConnection.getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//On exécute la requête
ResultSet res = state.executeQuery(query);
//Temps d'exécution
//On récupère les meta afin de récupérer le nom des colonnes
ResultSetMetaData meta = res.getMetaData();
//On initialise un tableau d'Object pour les en-têtes du tableau
Object[] column = new Object[meta.getColumnCount()];
for(int i = 1 ; i <= meta.getColumnCount(); i++)
column[i-1] = meta.getColumnName(i);
//Petite manipulation pour obtenir le nombre de lignes
res.last();
int rowCount = res.getRow();
Object[][] data = new Object[res.getRow()][meta.getColumnCount()];
//On revient au départ
res.beforeFirst();
int j = 1;
//On remplit le tableau d'Object[][]
while(res.next()){
for(int i = 1 ; i <= meta.getColumnCount(); i++)
data[j-1][i-1] = res.getObject(i);
j++;
}
//On ferme le tout
res.close();
state.close();
long totalTime = System.currentTimeMillis() - start;
//On enlève le contenu de notre conteneur
result.removeAll();
//On y ajoute un JTable
result.add(new JScrollPane(new JTable(data, column)), BorderLayout.NORTH);
result.add(new JLabel("La requête à été exécuter en " + totalTime + " ms et a retourné " + rowCount + " ligne(s)"), BorderLayout.SOUTH);
//On force la mise à jour de l'affichage
result.revalidate();
} catch (SQLException e) {
//Dans le cas d'une exception, on affiche une pop-up et on efface le contenu
result.removeAll();
result.add(new JScrollPane(new JTable()), BorderLayout.NORTH);
result.revalidate();
JOptionPane.showMessageDialog(null, e.getMessage(), "ERREUR ! ", JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String[] args){
new Fenetre();
}
} |
Screenshot :
Pièce jointe 162987