Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : remplir et afficher Jtable [ Système / JDBC ] (ezzeddinehannachi)

mercredi 30 juillet 2008 à 13:35:48 | remplir et afficher Jtable

ezzeddinehannachi

bonjour, j'ai un probleme avec l'affichage de Jtable lors de l'exection de l'application normalement elle doit m'afficher le resultat d'une requete sql mais la table est vide et j'ai essayer le meme code de connexion de ma Jtable dans un nouveau projet é ca marche mais lorsque je l'integre dans l'application rien n'est afficher.
voici le code si quelqu'un peut le tester et me donner une idée vraiment je suis coincé depuis 4 jours et j'ai pas pu résoudre le problème.merci d'avance .


Code :
class CachingResultSetTableModel extends ResultSetTableModel
{public CachingResultSetTableModel(ResultSet aResultSet)
{super(aResultSet);
try
{ cache = new ArrayList();
int cols = getColumnCount();
ResultSet rs = getResultSet();
 
/* place all data in an array list of Object[] arrays
We don't use an Object[][] because we don't know
how many rows are in the result set
*/

 
while(rs.next())
{ Object[] row = new Object[cols];
for(int j = 0; j < row.length; j++)
row[j] = rs.getObject(j + 1);
cache.add(row);
}
}
catch(SQLException e)
{ System.out.println("Error " + e);
}
}
 
public Object getValueAt(int r, int c)
{if(r < cache.size())
return((Object[])cache.get(r))[c];
else
returnnull;
}
 
publicint getRowCount()
{return cache.size();
}
 
private ArrayList cache;
}
 
Code :
import java.sql.ResultSet;
 
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
 
import javax.swing.table.AbstractTableModel;
 
abstractclass ResultSetTableModel extends AbstractTableModel
{public ResultSetTableModel(ResultSet aResultSet)
{ rs = aResultSet;
try
{ rsmd = rs.getMetaData();
}
catch(SQLException e)
{ System.out.println("Error " + e);
}
}
 
public String getColumnName(int c)
{try
{return rsmd.getColumnName(c+1);
}
catch(SQLException e)
{ System.out.println("Error " + e);
return"";
}
}
 
publicint getColumnCount()
{try
{return rsmd.getColumnCount();
}
catch(SQLException e)
{ System.out.println("Error " + e);
return0;
}
}
 
protected ResultSet getResultSet()
{return rs;
}
 
private ResultSet rs;
private ResultSetMetaData rsmd;
}
Code :
import java.sql.ResultSet;
import java.sql.SQLException;
 
class ScrollingResultSetTableModel extends ResultSetTableModel
{public ScrollingResultSetTableModel(ResultSet aResultSet)
{super(aResultSet);
}
 
public Object getValueAt(int r, int c)
{try
{ ResultSet rs = getResultSet();
rs.absolute(r + 1);
return rs.getObject(c + 1);
}
catch(SQLException e)
{ System.out.println("Error " + e);
returnnull;
}
}
 
publicint getRowCount()
{try
{ ResultSet rs = getResultSet();
rs.last();
return rs.getRow();
}
catch(SQLException e)
{ System.out.println("Error " + e);
return0;
}
}
}
Code :
 
 
 
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
 
import java.sql.Statement;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
 
publicclass Ratiotest extends JFrame {
private BorderLayout layoutMain = new BorderLayout();

private JScrollPane scrollPane;

private ResultSetTableModel model;
private JPanel panelCenter = new JPanel();
private JMenuBar menuBar = new JMenuBar();
private JMenu menuFile = new JMenu();
private JMenuItem menuFileExit = new JMenuItem();
private JToolBar toolBar = new JToolBar();
private JButton buttonOpen = new JButton();
private JButton buttonClose = new JButton();
private JButton buttonHelp = new JButton();
private ImageIcon imageOpen = new ImageIcon(ratio.class.getResource("openfile.gif"));
private ImageIcon imageClose = new ImageIcon(ratio.class.getResource("closefile.gif"));
private ImageIcon imageHelp = new ImageIcon(ratio.class.getResource("help.gif"));
private JLabel jLabel1 = new JLabel();
private JTextField jTextField1 = new JTextField();
private JTextField jTextField2 = new JTextField();
private JLabel jLabel2 = new JLabel();
private JComboBox jComboBox1 = new JComboBox();
private ResultSet rs;
private Connection con;
private Statement stmt;
privatestaticboolean SCROLLABLE = false;
private JTextField jTextField3 = new JTextField();
private JTable jTable1 = new JTable();
 
 
public Ratiotest(){
try{
jbInit();
}catch(Exception e){
e.printStackTrace();
}


try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// force loading of driver
String url = "jdbc:odbc:dbFinJan08";
String user = "";
String password = "";
con = DriverManager.getConnection(url, user,
password);

stmt = con.createStatement();

DatabaseMetaData md = con.getMetaData();
String sql = "SELECT Name\n" +
"FROM Geo INNER JOIN GeoNames ON Geo.ID = GeoNames.ID where Geo.GeoLevel=3 ;\n";
ResultSet mrs = stmt.executeQuery( sql );
while(mrs.next()){
// System.out.println(mrs.getString(1));
jComboBox1.addItem(mrs.getString(1));
}
//mrs.close();

}
catch(ClassNotFoundException e)
{
System.out.println("Error " + e);
}
catch(SQLException e)
{ System.out.println("Error " + e);
}
}
 
privatevoid jbInit()throws Exception {
this.setJMenuBar( menuBar );
this.getContentPane().setLayout( layoutMain );
panelCenter.setLayout(null);
this.setSize(new Dimension(661, 509));
menuFile.setText("File");
menuFileExit.setText("Exit");
menuFileExit.addActionListener(new ActionListener(){publicvoid actionPerformed( ActionEvent ae ){ fileExit_ActionPerformed( ae ); }});
buttonOpen.setToolTipText("Open File");
buttonOpen.setIcon( imageOpen );
buttonClose.setToolTipText("Close File");
buttonClose.setIcon( imageClose );
buttonHelp.setToolTipText("About");
buttonHelp.setIcon( imageHelp );
jLabel1.setText("Date Début");
jLabel1.setBounds(new Rectangle(5, 20, 115, 30));
jTextField1.setBounds(new Rectangle(130, 20, 120, 30));
jTextField2.setBounds(new Rectangle(130, 65, 120, 30));
jLabel2.setText("Date Fin");
jLabel2.setBounds(new Rectangle(5, 65, 115, 30));
jComboBox1.setBounds(new Rectangle(270, 20, 120, 35));
jComboBox1.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
jComboBox1_actionPerformed(e);
}
});
jTextField3.setBounds(new Rectangle(5, 120, 125, 30));
jTextField3.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
// jTextField3_actionPerformed(e);
//jTextField3.setText((String)jComboBox1.getSelectedItem());
}
});
jTable1.setBounds(new Rectangle(115, 200, 320, 115));
menuFile.add( menuFileExit );
menuBar.add( menuFile );
toolBar.add( buttonOpen );
toolBar.add( buttonClose );
toolBar.add( buttonHelp );
this.getContentPane().add( toolBar, BorderLayout.NORTH);

// scrollPane.getViewport().add(jTable1, null);
panelCenter.add(jTable1, null);
panelCenter.add(jTextField3, null);
panelCenter.add(jComboBox1, null);
panelCenter.add(jLabel2, null);
panelCenter.add(jTextField2, null);
panelCenter.add(jTextField1, null);
panelCenter.add(jLabel1, null);
this.getContentPane().add(panelCenter, BorderLayout.CENTER);
}
 
void fileExit_ActionPerformed(ActionEvent e){
System.exit(0);
}
publicvoid actionPerformed(ActionEvent evt)
{if(evt.getSource() == jComboBox1)
{// show the selected table from the combo box
 
if(scrollPane != null)
getContentPane().remove(scrollPane);

try
{ String tableName
= (String)jComboBox1.getSelectedItem();
// if (rs != null) rs.close();
String query = "SELECT Sum(ClientTrack.Amount) AS SumOfAmount,Count(ClientTrack.Client) AS CountOfClients FROM ((ClientTrack INNER JOIN Loan ON ClientTrack.Loan = Loan.ID) INNER JOIN Table_essai ON Loan.Location = Table_essai.Souszone) INNER JOIN GeoNames ON Table_essai.Zone = GeoNames.ID where Name='"+tableName+"'" ;
rs = stmt.executeQuery(query);
if(SCROLLABLE)
model = new ScrollingResultSetTableModel(rs);
else
model = new CachingResultSetTableModel(rs);
 
JTable jTable1 = new JTable(model);

}
catch(SQLException e)
{ System.out.println("Error " + e);
}
catch(Exception e){
System.out.print("erreur1 "+e.getMessage());//récuperer le message d'erreur en cas d'erreur
}
}
}
publicstaticvoid main(String args[]){
Ratiotest rati=new Ratiotest();
rati.show();

}
 
privatevoid jComboBox1_actionPerformed(ActionEvent e){
jTextField3.setText((String)jComboBox1.getSelectedItem());
}
 

}
 
 
 

jeudi 31 juillet 2008 à 00:30:49 | Re : remplir et afficher Jtable
jeudi 31 juillet 2008 à 08:12:36 | Re : remplir et afficher Jtable

ezzeddinehannachi

merci jiido pour ta reponse.mais tu peux m'exlpliquer pourquoi ce que commentaire stp

jeudi 31 juillet 2008 à 13:17:07 | Re : remplir et afficher Jtable

Chatbour

Membre Club
Salut,

je pense qu'il veut te dire qu'on postant un tel code ni commenté ni indenté ne crois pas que tu recevra des réponses..

au moins postes juste la partie concernée par le problème et non pas tout le code..




_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
[ Lien ]

jeudi 31 juillet 2008 à 14:41:53 | Re : remplir et afficher Jtable

ezzeddinehannachi

salut,
ok je vais resumer le probleme normalement j'ai pas des erreurs ou des exceptions dans le code mais le probleme dans la frame que j'ai je ne peux pas afficher la Jtable je peux voir juste le Jcombobox et lé jtextfield et je ne sais pas c du a quoi.donc je pense que c'est un probleme d'affichage.
je vais reposter juste le code de la frame ou il y a le probleme.et merci pour votre aide
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
 
import java.sql.Statement;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
 
publicclass Ratiotest extends JFrame {
private BorderLayout layoutMain = new BorderLayout();

private JScrollPane scrollPane;

private ResultSetTableModel model;
private JPanel panelCenter = new JPanel();
private JMenuBar menuBar = new JMenuBar();
private JMenu menuFile = new JMenu();
private JMenuItem menuFileExit = new JMenuItem();
private JToolBar toolBar = new JToolBar();
private JButton buttonOpen = new JButton();
private JButton buttonClose = new JButton();
private JButton buttonHelp = new JButton();
private ImageIcon imageOpen = new ImageIcon(ratio.class.getResource("openfile.gif"));
private ImageIcon imageClose = new ImageIcon(ratio.class.getResource("closefile.gif"));
private ImageIcon imageHelp = new ImageIcon(ratio.class.getResource("help.gif"));
private JLabel jLabel1 = new JLabel();
private JTextField jTextField1 = new JTextField();
private JTextField jTextField2 = new JTextField();
private JLabel jLabel2 = new JLabel();
private JComboBox jComboBox1 = new JComboBox();
private ResultSet rs;
private Connection con;
private Statement stmt;
privatestaticboolean SCROLLABLE = false;
private JTextField jTextField3 = new JTextField();
private JTable jTable1 = new JTable();
 
 
public Ratiotest(){
try{
jbInit();
}catch(Exception e){
e.printStackTrace();
}

// recuperer le resultat de la requete dans le jcombobox
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// force loading of driver
String url = "jdbc:odbc:dbFinJan08";
String user = "";
String password = "";
con = DriverManager.getConnection(url, user,
password);

stmt = con.createStatement();

DatabaseMetaData md = con.getMetaData();
String sql = "SELECT Name\n" +
"FROM Geo INNER JOIN GeoNames ON Geo.ID = GeoNames.ID where Geo.GeoLevel=3 ;\n";
ResultSet mrs = stmt.executeQuery( sql );
while(mrs.next()){
// System.out.println(mrs.getString(1));
jComboBox1.addItem(mrs.getString(1));
}
//mrs.close();

}
catch(ClassNotFoundException e)
{
System.out.println("Error " + e);
}
catch(SQLException e)
{ System.out.println("Error " + e);
}
}
 
privatevoid jbInit()throws Exception {
this.setJMenuBar( menuBar );
this.getContentPane().setLayout( layoutMain );
panelCenter.setLayout(null);
this.setSize(new Dimension(661, 509));
menuFile.setText("File");
menuFileExit.setText("Exit");
menuFileExit.addActionListener(new ActionListener(){publicvoid actionPerformed( ActionEvent ae ){ fileExit_ActionPerformed( ae ); }});
buttonOpen.setToolTipText("Open File");
buttonOpen.setIcon( imageOpen );
buttonClose.setToolTipText("Close File");
buttonClose.setIcon( imageClose );
buttonHelp.setToolTipText("About");
buttonHelp.setIcon( imageHelp );
jLabel1.setText("Date Début");
jLabel1.setBounds(new Rectangle(5, 20, 115, 30));
jTextField1.setBounds(new Rectangle(130, 20, 120, 30));
jTextField2.setBounds(new Rectangle(130, 65, 120, 30));
jLabel2.setText("Date Fin");
jLabel2.setBounds(new Rectangle(5, 65, 115, 30));
jComboBox1.setBounds(new Rectangle(270, 20, 120, 35));
jComboBox1.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
jComboBox1_actionPerformed(e);
}
});
jTextField3.setBounds(new Rectangle(5, 120, 125, 30));
jTextField3.addActionListener(new ActionListener(){
publicvoid actionPerformed(ActionEvent e){
// jTextField3_actionPerformed(e);
//jTextField3.setText((String)jComboBox1.getSelectedItem());
}
});
jTable1.setBounds(new Rectangle(115, 200, 320, 115));
menuFile.add( menuFileExit );
menuBar.add( menuFile );
toolBar.add( buttonOpen );
toolBar.add( buttonClose );
toolBar.add( buttonHelp );
this.getContentPane().add( toolBar, BorderLayout.NORTH);

// scrollPane.getViewport().add(jTable1, null);
panelCenter.add(jTable1, null);
panelCenter.add(jTextField3, null);
panelCenter.add(jComboBox1, null);
panelCenter.add(jLabel2, null);
panelCenter.add(jTextField2, null);
panelCenter.add(jTextField1, null);
panelCenter.add(jLabel1, null);
this.getContentPane().add(panelCenter, BorderLayout.CENTER);
}
 
void fileExit_ActionPerformed(ActionEvent e){
System.exit(0);
}
//afficher et remplir Jtable
publicvoid actionPerformed(ActionEvent evt)
{if(evt.getSource() == jComboBox1)
{// show the selected table from the combo box
 
if(scrollPane != null)
getContentPane().remove(scrollPane);

try
{ String tableName
= (String)jComboBox1.getSelectedItem();
// if (rs != null) rs.close();
String query = "SELECT Sum(ClientTrack.Amount) AS SumOfAmount,Count(ClientTrack.Client) AS CountOfClients FROM ((ClientTrack INNER JOIN Loan ON ClientTrack.Loan = Loan.ID) INNER JOIN Table_essai ON Loan.Location = Table_essai.Souszone) INNER JOIN GeoNames ON Table_essai.Zone = GeoNames.ID where Name='"+tableName+"'" ;
rs = stmt.executeQuery(query);
if(SCROLLABLE)
model = new ScrollingResultSetTableModel(rs);
else
model = new CachingResultSetTableModel(rs);
 
JTable jTable1 = new JTable(model);

}
catch(SQLException e)
{ System.out.println("Error " + e);
}
catch(Exception e){
System.out.print("erreur1 "+e.getMessage());//récuperer le message d'erreur en cas d'erreur
}
}
}
publicstaticvoid main(String args[]){
Ratiotest rati=new Ratiotest();
rati.show();

}
 
privatevoid jComboBox1_actionPerformed(ActionEvent e){
jTextField3.setText((String)jComboBox1.getSelectedItem());
}
 

}



jeudi 31 juillet 2008 à 15:41:30 | Re : remplir et afficher Jtable

Chatbour

Membre Club
Réponse acceptée !
Re,

essayes d'afficher un JScrollPane au lieu d'afficher la JTable..




_____________________
Vos avis et critiques sur le livre "Objets réactifs en java" de Frédéric Boussinot : contactez moi par MP..
[ Lien ]

vendredi 1 août 2008 à 09:39:17 | Re : remplir et afficher Jtable

ezzeddinehannachi

bonjour,
merci Chatbour pour té conseils enfin j'ai pu resoudre le probleme, ce que j'ai fé et je ne sé pas si c'est la bonne solution ou non mais ou moins c bon ca marche j'ai supprimer la methode jbInit() et j'ai remplacer ts ce qu'il y a dedans dans le constructeur de la Frame.
merci encore une fois Chatbour



Cette discussion est classé dans : private, rs, import, javax, swing


Répondre à ce message

Sujets en rapport avec ce message

[JFram][TabbedPane]pb de construction de code!! [ par ArNOo ] salut..voila g des pb de construction de code...c vrai que je suis un noob en java...pouvez vs me proposer une solution....qui me crée un deuxieme ong Probleme de requete [ par thanatos67 ] Salut à tous.Je suis en BTS IRIS et pour mon projet je dois créer une base de donnée mysql qui va recevoir des données d'une station météorologique et jTable/jCheckBox [ par Dellys ] Bonjour Je voudrai s'avoir commet afficher un jCheckBox sur un ma jTable dans une colonnes de type booléen et aussi lui attribuer un listner < PB dans main [ par thanatos67 ] Salut à toi lecteur. Oui toi! J'ai un petit soucis.J'ai déjà eu un premier soucis résolu grace à l'aide de TWINUTS (encore merci). J'ai une classe dan [Swing] Comment regénérer un JPanel [ par coinki ] Bonjour,J'ai un JPanel qui suivant une certaine valeur contient des composants différents. Lorsque j'appuie sur un bouton, je voudrai que ça passe de creation d'interface graphique en java [ par melianos31 ] Bonjour.Je développe en ce moment une interface graphique en java ( merci le tuto de tucobouch ), mais j'ai un petit probleme.Si je met tout dans la problème avec identification [ par sissi25 ] J ai une page d identification qui comporte le choix d une fonction dans une combobox, la saisie du nom dans un jTextField et la saisie du mot de pass JTable supprimer ligne [ par crazysetup ] Salut a tous, j'ai un problème et j'aimerais trouver la solution.J'ai créé une JTable avec un bouton ajouter qui ajoute des lignes vides et un autre s JSlider renderer dans une JTable [ par malawih ] Bonjour, J ai insere des JSlider dans une colonne d une JTable, en refinissant le renderer et l editor. Le probleme est que les slider ne sont pas mis caret perso [ par 3615jenveux ] Bonjour,Je cherche a écrire un Caret de sélection de texte perso pour un JTextComponent. Cela fonctionne, mais j'ai du mal implémenter ma classe, car


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 7,316 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.