Mi arrendo. non ci capisco nulla.
perché, per quale immane motivo, non mi vede automobili dentro al getValueAt???
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import java.util.List;
public class AutomobileTableModel extends AbstractTableModel
{
private static final String colonne[] = {"Marca", "Modello", "Stato", "Prezzo", "Tipo", "Colore", "KM", "Anno Imm.", "Scadenza Bollo", "Targa", "Posti", "Portiere", "Bagagliaio", "Cilindrata", "Cilindri", "Cavalli", "Peso/Potenza", "Alimentazione", "Consumo", "Trazione", "Cambio", "Marce", "Lunghezza", "Massa a Vuoto", "Altezza Car.", "Tettuccio"};
private static final Class<?>[] tipiColonne = {String.class, String.class, String.class, Integer.class, String.class, String.class, Integer.class, String.class, Integer.class, String.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Integer.class, Double.class, String.class, Integer.class, String.class, Integer.class, Integer.class, Double.class, Integer.class, Double.class, String.class};
private List<Automobili> automobili;
public AutomobileTableModel(List<Automobili> automobili)
{
this.automobili = automobili;
}
@Override
public int getRowCount()
{
return automobili.size();
}
@Override
public int getColumnCount()
{
return colonne.length;
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return tipiColonne[columnIndex];
}
@Override
public String getColumnName (int columnIndex)
{
return colonne[columnIndex];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
Automobili automobili = automobili.get(rowIndex);
switch(columnIndex)
{
case 0 = return automobili.getMarca();
case 1 = return automobili.getModello();
case 2 = return automobili.getStato();
case 3 = return automobili.getPrezzo();
case 4 = return automobili.getTipo();
case 5 = return automobili.getColore();
case 6 = return automobili.getKm();
case 7 = return automobili.getAnnoImmatricolazione();
case 8 = return automobili.getScadenzaBollo();
case 9 = return automobili.getTarga();
case 10 = return automobili.getPosti();
case 11 = return automobili.getPortiere();
case 12 = return automobili.getBagagliaio();
case 13 = return automobili.getCilindrata();
case 14 = return automobili.getCilindri();
case 15 = return automobili.getCavalli();
case 16 = return automobili.getRapportoPP();
case 17 = return automobili.getMotore();
case 18 = return automobili.getConsumo();
case 19 = return automobili.getTrazione();
case 20 = return automobili.getCambio();
case 21 = return automobili.getMarce();
case 22 = return automobili.getLunghezza();
case 23 = return automobili.getMassaVuoto();
case 24 = return automobili.getAltezzaTerra();
case 25 = return automobili.getTettuccio();
default return null;
}
}
}
perché porca paletta santa non mi riconosce il metodo set? l'ho chiamato nel costruttore, come hai fatto te, però a me da un dannatissimo errore e non capisco perchè si genera. il pack è un metodo di jframe, se non ho letto male io, quindi perchè non lo posso richiamare nel costruttore della classe? perchè porca miseriaccia, dopo che ho creato la lista di automobili, non mi vede il comando add?? e perchè fa come se la mia classe Automobili non esistesse??
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
public class FrameTabella extends JTable
{
List<Automobili> automobili = new ArrayList<Automobili>();
automobili.add(new Automobili());
private AutomobileTableModel tb = new AutomobileTableModel(automobili);
private JScrollPane p = new JScrollPane();
public FrameTabella()
{
JFrame jf = new JFrame("Lista Veicoli");
JLabel jl = new JLabel("Inserisci il numero di veicoli da visualizzare");
JLabel jl1 = new JLabel("Scegli cosa visualizzare");
//setDefaultCloseOperation(EXIT_ON_CLOSE);
JRadioButton auto = new JRadioButton("Auto");
JRadioButton moto = new JRadioButton("Moto");
JRadioButton both = new JRadioButton("Entrambi");
auto.setSelected(true);
class RadioButtonActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JRadioButton button = (JRadioButton)e.getSource();
if (button == auto) JOptionPane.showMessageDialog(null, "auto");
else if (button == moto) JOptionPane.showMessageDialog(null, "moto");
else if (button == both) JOptionPane.showMessageDialog(null, "entrambi");
}
}
RadioButtonActionListener al = new RadioButtonActionListener();
auto.addActionListener(al);
moto.addActionListener(al);
both.addActionListener(al);
ButtonGroup group = new ButtonGroup();
group.add(auto);
group.add(moto);
group.add(both);
JCheckBox cb = new JCheckBox("Mostra in kw");
cb.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
JCheckBox c = (JCheckBox)e.getSource();
if(c.isSelected())
JOptionPane.showMessageDialog(null, "selezionato");
else
JOptionPane.showMessageDialog(null, "deselezionato");
}
});
SpinnerModel jsm = new SpinnerNumberModel(10, 0, 1000, 5);
final JSpinner js = new JSpinner(jsm);
JButton b = new JButton("Visualizza");
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Integer i = (Integer)js.getValue();
//atm.getRowCount(i);
}
});
/*js.addChangeListener(new ChangeListener() //questo listener vede i cambiamenti nello spinner
{
public void stateChanged(ChangeEvent e)
{
Object i = ((JSpinner)e.getSource()).getValue();
//JOptionPane.showMessageDialog(null, "hai digitato " + ((JSpinner)e.getSource()).getValue(), "allert", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, i);
}
});*/
add(p);
add(jl);
add(js);
add(b);
add(jl1);
add(auto); p.add(moto); p.add(both);
add(cb);
//pack();
setVisible(true);
}
}
non sto dicendo che non voglio studiare. e nemmeno che non abbia provato a cercare una spiegazione a questi errori. non l'ho trovata.
è chiaro che sono abbastanza ignorante, ma ho voglia di imparare, facendo pratica per il momento. voglio capire PERCHE' sbaglio, e COSA. e dopo averci perso ieri e oggi a cercare di capire questa funzione, devo dire che nonostante il concetto sia chiaro, non è chiaro quello che ci posso fare. la mia ignoranza è emersa quando ho provato a fare un jframe direttamente nella classe, però ho capito lo sbaglio. ciò non significa che ho capito tutto. e questa cosa mi sta facendo andare via di testa
posso chiedervi il favore di dirmi dove sbaglio e perchè sbaglio per piacere?