Ciao a tutti!
Il mio problema è inserire in una JTable di due colonne("PRODOTTO", "QUANTITA'") , i dati presi da due colonne (nome, qta_contenuta) della tabella del database prodottomagazzino.
Mi serve quindi una Jtable dinamica perchè posso inserire nuovi prodotti in prodottomagazzino.
Il numero di righe che dovrei inserire nella JTable lo trovo ogni volta grazie a una select count.
Potete spiegarmi dove sbaglio, cosa manca e perchè non riesco a vedere la tabella??
..ecco il codice..
Grazie mille
[ CODE]
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.StringTokenizer;
import javax.swing.*;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.swing.table.AbstractTableModel;
/**
*
* @author Mariuccia
*/
public class Inventario extends JPanel{
private JButton esci = new JButton("ESCI");
private Statement st;
private ResultSet rs;
private Connection conn = Connessione.getConnessione();
String [] tit = { "PRODOTTO", "QUANTITA'" };
Object [][] dati;
private MyTableModel modTab = new MyTableModel(dati, tit);
private JTable tab = new JTable(modTab);
private JScrollPane scrol = new JScrollPane();
public String idR = File.IDristorante(); //trovo id ristorante
private int codPro, codMag;
private String temp = "";
private String valore = "";
private String temp2 = "";
private int conta = 0;
public Inventario() {
initComponents();
setBackground(Color.green);
setLayout(null);
}
private void initComponents(){
esci.setBounds(280,310,90,30);
add(esci);
esci.addActionListener(new Esci());
scrol.getViewport().add(tab);
scrol.setBounds(130,50,350,120);
scrol.setAutoscrolls(true);
add(scrol);
Inserisci();
}
public int NumRighe(){
//conto quante righe dovrò inserire nella mia tabella
try{
st = conn.createStatement();
rs = st.executeQuery("select ID from magazzino where rist = '"+idR+"' ");
while (rs.next()) {
String tmp1 = rs.getString(1);
codMag = Integer.parseInt(tmp1); //CodiceMagazzino
}
st = conn.createStatement();
rs = st.executeQuery("select COUNT(*) from prodottomagazzino join contiene where idmag = '"+codMag+"' AND COD = codprod");
while (rs.next()) {
conta = Integer.parseInt( rs.getString(1));
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}
return conta;
}
//MODELLO MIA TABELLA
class MyTableModel extends AbstractTableModel{
private String[] title;
private Object[][] celle;
public MyTableModel(Object [][] d, String[] nome){
title = nome;
celle = d;
}
public Class getColumnClass(int colIndex){
if(colIndex!=0) return String.class;
else if(colIndex == 0) return String.class;
else throw new RuntimeException();
}
public String getColumnName(int colIndex){
return (String)title[colIndex];
}
public int getRowCount(){
return NumRighe();
}
public int getColumnCount(){
return title.length;
}
public Object getValueAt(int rowIndex, int colIndex){
return celle[rowIndex][colIndex];
}
// public boolean isCellEditable(int rowIndex, int colIndex){
// //metto le celle di tutte e 2 le colonne editabili:
// //nella prima posso cancellare gli ingredienti che non voglio, nella seconda imposto le quantità
// return colIndex >= 0;
// }
//
// public void setValueAt(Object aValue, int rowIndex, int colIndex){
// //per mantenere il valore che edito nella cella della tabella
// celle[rowIndex][colIndex] = aValue;
// }
}
public void Inserisci(){
dati = new Object [NumRighe()][2];
try{
st = conn.createStatement();
rs = st.executeQuery("select ID from magazzino where rist = '"+idR+"' ");
while (rs.next()) {
String tmp1 = rs.getString(1);
codMag = Integer.parseInt(tmp1); //CodiceMagazzino
}
rs = st.executeQuery("select nome, qta_contenuta from prodottomagazzino join contiene where idmag = '"+codMag+"' AND COD = codprod");
int i = 0;
while (rs.next()) {
dati[i][0] = rs.getObject("nome");
dati[i][1] = rs.getObject("qta_contenuta");
System.out.println(dati[i][0]);
System.out.println(dati[i][1]);
i++;
}
// while (rs.next()) {
// temp = rs.getString("nome");
// temp2 = rs.getString("qta_contenuta");
// System.out.println(temp);
// System.out.println(temp2);
// }
//
// for( int r = 0; r <= NumRighe(); r++){
// modTab.setValueAt(temp, r, 0);
// tab.revalidate();
// }
// for( int r = 0; r <= NumRighe(); r++){
// modTab.setValueAt(temp2, r, 1);
// tab.revalidate();
// }
}catch (SQLException sqle) {
sqle.printStackTrace();
}
}
public class Esci implements ActionListener{
public void actionPerformed(ActionEvent e){ } }
}
[/ CODE]