Jcombobox in jatable con valori presi da database

di il
1 risposte

Jcombobox in jatable con valori presi da database

Ho questo problema ho creato una pagina in nella quale selezionando la categoria mi escono i vari prodotti in una tabella prelevandoli dal database ora nell'ultima cella di questa tabella devo inserire la jcombobox per sapere la quantità di articoli io ho utilizzato questo codice ma non esce nulla:


//codice per jcombobox
TableColumn QuantitàColumn = table.getColumnModel().getColumn(6);
int k;
for( k=1; k<=(int) table.getValueAt(table.getSelectedRow(), 5) ;k++){
nOrd.addItem(new Integer(k));

}
QuantitàColumn.setCellEditor(new DefaultCellEditor(nOrd));

come devo fare ?

//codice pagina

package it.view;
import it.DBConnection.DbConnection;
import it.view.logIn;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;

public class dipendente extends JFrame{
private DefaultTableModel defTableModel;
private JTable table;


public dipendente(){

super("Dipendente"); //titolo pagina

setSize(1800,1000); //grandezza pagina
setLocation(50,15);
setLayout(null);
//immagini bottoni
ImageIcon imgc=new ImageIcon("car.gif");
ImageIcon logO=new ImageIcon("logout.gif");
ImageIcon cerc=new ImageIcon("cerca.gif");

//creo tipo di font
Font f=new Font("times new roman",Font.PLAIN,25);

//creo contenitore
Container c =getContentPane();

//creo i label
JLabel Ben=new JLabel("Benvenuto "+logIn.U.getText()+" !");
JLabel Cat=new JLabel("Categoria");
final JLabel a=new JLabel("Vuoto");
//creo i button
JButton Esci=new JButton(logO);
JButton car=new JButton(imgc);
JButton cerca=new JButton(cerc);

//creo menu tendina

final JComboBox Cate = new JComboBox();
final JComboBox nOrd = new JComboBox();



//query al dataBase per le categorie
String sql="Select DISTINCT Nome from Categoria;";
Vector<String[]>result=DbConnection.getInstance().eseguiQuery(sql);
Iterator<String[]>i=result.iterator();
//creo modello tabella e rendo righe non selezionabili
defTableModel = new DefaultTableModel();
table = new JTable(defTableModel){
public boolean isCellEditable(int row, int column) {
return false;
}

};

//scorre nell'array
while(i.hasNext()){
String[] riga = i.next();

Cate.addItem(riga[0]);

}
cerca.addActionListener(new ActionListener(){
DefaultTableModel model = (DefaultTableModel) table.getModel();

public void actionPerformed(ActionEvent e){

String s=Cate.getSelectedItem().toString();


String sql="Select IdCategoria from Categoria where Nome='"+s+"';";
Vector<String[]>result=DbConnection.getInstance().eseguiQuery(sql);
Iterator<String[]>i=result.iterator();


while(i.hasNext()){
Object[]riga=i.next();
String sql1="Select * from Articolo where CodCat='"+riga[0]+"';";
Vector<String[]>result1=DbConnection.getInstance().eseguiQuery(sql1);
Iterator<String[]>j=result1.iterator();

while(j.hasNext()){
Object[]riga1=j.next();
Object[][] data = result1.toArray(new Object[0][]);
defTableModel.setDataVector(data, new Object[] {"IdArticolo","Nome","Descrizione","Costo","Disponibilita'","NMaxOrd","Quantità"});

}


}

}//chiude l'action performed

}); //chiude actionlistener
JScrollPane pane=new JScrollPane(table);


table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me) {
String col1 = (String) table.getValueAt(table.getSelectedRow(), 0);
String col2 = (String) table.getValueAt(table.getSelectedRow(), 1);
String col3 = (String) table.getValueAt(table.getSelectedRow(), 2);
Double col4 = (Double) table.getValueAt(table.getSelectedRow(), 3);
int col5 = (int) table.getValueAt(table.getSelectedRow(), 4);
int col6 = (int) table.getValueAt(table.getSelectedRow(), 5);

// int col7 = (int) table.getValueAt(table.getSelectedRow(), 6, nOrd);


TableColumn QuantitàColumn = table.getColumnModel().getColumn(6);
int k;
for( k=1; k<=(int) table.getValueAt(table.getSelectedRow(), 5) ;k++){
nOrd.addItem(new Integer(k));

}
QuantitàColumn.setCellEditor(new DefaultCellEditor(nOrd));
if((col1.length() != 0) && (col2.length() != 0)) System.out.println("Contenuto riga selezionata: "+col1+" "+col2+" "+col3+" "+col4+" "+col5+" "+col6+" ");
/* String sql3=";";
DbConnection.getInstance().eseguiQuery(sql3);*/
}

});






//imposto font
Ben.setFont(f);

Cat.setFont(f);
Esci.setFont(f);
car.setFont(f);
Cate.setFont(f);
pane.setFont(f);

Ben.setBounds(1350,10,200,50);
Esci.setBounds(1575,10,50,50);
car.setBounds(1650,10,50,50);
Cate.setBounds(800,100,Cate.getPreferredSize().width,50);
cerca.setBounds(1000, 100, 100, 50);
pane.setBounds(200,300,1500,pane.getPreferredSize().height);

c.add(Ben);
c.add(Esci);
c.add(car);
c.add(Cate);
c.add(cerca);
c.add(pane);
c.add(nOrd);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);




}
}

1 Risposte

  • Re: Jcombobox in jatable con valori presi da database

    Bri ha scritto:


    io ho utilizzato questo codice ma non esce nulla:
    Non ho letto tutto tutto ma ... c'è una cosa importante da (far) notare: il combobox è corretto metterlo usando DefaultCellEditor e poi assegnandolo con setCellEditor su una certa colonna.
    Il punto è che il combobox NON lo vedi subito su tutte le celle della colonna. La cella deve entrare in editing affinché il combobox sia visibile. E questo vuol anche dire che quella colonna deve essere "editabile", cosa che invece nel tuo caso non lo è perché hai ridefinito isCellEditable per dare sempre false.

    Tra l'altro isCellEditable l'hai ridefinito in JTable, cosa che generalmente non si fa, perché l'indice di colonna può differire tra view e model. Generalmente isCellEditable lo si ridefinisce a livello di model.
Devi accedere o registrarti per scrivere nel forum
1 risposte