Allora cercherò di essere più chiaro, aiutandomi anche con delle immagini.
Io ho un menù inserito in una tabella "Pizze", cliccando su questa tabella mi si apre un pannello(utile per aggiungere o sottrare gli ingredienti) all'interno ho inserito delle JLabel e due comboBox una degli ingredienti disponibili e una degli ingredienti della pizza selezionata, adesso vorrei inserire una tabella dove vanno messi gli ingredienti selezionati nella prima combobox (ho deciso una tabella cosi non ho problemi per poi eliminarli nel caso in cui si cambia scelta), passo al codice:
codice:
private void PizzeMousePressed(java.awt.event.MouseEvent evt) {
int RigaSelezionata=-1;
String NomePizza = null;
String Ingredienti = null;
RigaSelezionata = Pizze.getSelectedRow();
NomePizza = (String) Pizze.getValueAt(RigaSelezionata, 0);
Ingredienti = (String) Pizze.getValueAt(RigaSelezionata, 1);
int p=0;
String[] tokens = Ingredienti.split(",|\\s");
String[] Sottrai = new String[(tokens.length/2)+1];
for(int i=0;i<tokens.length;i++){
if(tokens[i].equals("")){
System.out.println("Questo è vuoto");
}else {
Sottrai[p] = tokens[i];
p++;
}
}
JComboBox box2=new JComboBox(Sottrai);
if(NomePizza!=null){
JLabel labelNomePizza= new JLabel(NomePizza);
JLabel labelIngredienti = new JLabel("Gli ingredienti sono:" + Ingredienti);
JLabel label1=new JLabel("Supplementi :");
JLabel label2=new JLabel("Sottrai :");
label1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
label2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
Vector v = new Vector(3);
v.add("Paperino");
TableModel dataModel = new VectorTableModel(v);
JTable table = new JTable(dataModel);
final JComponent[] inputs = new JComponent[] {
labelNomePizza,
labelIngredienti,
label1,
box1,
label2,
box2,
table
};
}
Il codice del tableModel è:
codice:
public class VectorTableModel extends AbstractTableModel {
Vector v = null;
String[] ColName = {"Ingrediente Selezionato"};
public VectorTableModel(Vector v) {
this.v = v;
}
@Override
public int getRowCount() {
return v.size();
}
@Override
public int getColumnCount() {
return ColName.length;
}
@Override
public Object getValueAt(int row, int col) {
VectorIngredienti b =(VectorIngredienti)v.elementAt(row);
return b.ingrediente;
}
@Override
public String getColumnName(int col) {
return ColName[col];
}
@Override
public Class getColumnClass(int col) {
return getValueAt(0, col).getClass();
}
@Override
public boolean isCellEditable(int row, int col){
/*if ((col == 2)|| (col == 3))
return true;
else return false;*/
return false;
}
@Override
public void setValueAt(Object value, int row,int col) {
VectorIngredienti b = (VectorIngredienti)v.elementAt(row);
b.ingrediente=((String)value);
fireTableDataChanged();
}
}
il codice del vettore è:
codice:
public class VectorIngredienti {
public Object ingrediente;
public VectorIngredienti(Object ingrediente){//, String author, int quantity, float price) {
this.ingrediente = ingrediente;
}
}
Quando nel JComponent non inserisco la table ottengo:
senza table.jpg
Quando inserisco la table, invece di vedersi la tabella, lo sfondo diventa bianco e vedo solamente le comboBox e il tasto ok!!!A cosa è dovuto?
Ps Naturalmente manca tutto il codice che inserisce l'ingrediente selezionato nella tabella!!!