KuroKami69 ha scritto:
posso chiederti di farmi un esempio di codice di spinner che si appoggia a un bottone per favore?
[...]
comunque se potessi farmi un esempio di come associare questi 2 elementi te ne sarei grato
Non è che lo spinner si appoggi al bottone, hai solo bisogno di utilizzare il getValue () dello spinner per leggerne il valore all'interno dell'actionPerformed del bottone.
final JSpinner spinner = new JSpinner (/* ... */);
// ...
JButton button = new JButton (/* ... */);
button.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent e) {
Object value = spinner.getValue ();
// Se usi uno SpinnerNumberModel puoi fare il cast a Integer senza rischi
Integer rows = (Integer) value;
// ... Fai quello che vuoi con rows ...
}
});
Se lo spinner non è variabile d'istanza della classe, ma è dichiarato localmente nel metodo dove crei il bottone, deve essere dichiarato prima del bottone ed essere final, altrimenti non potrai accederci all'interno della classe anonima che implementa ActionListener (da java8 in poi ti basta che sia "effectively final", ovvero se non ci assegni un altro oggetto in seguito non avrai errori dal compilatore).
Ti dico questo solo per evitarti errori in compilazione, ad ora non è fondamentale che tu capisca questi particolari.
KuroKami69 ha scritto:
Il funzionamento dei radio è lo stesso di quelli di html tipo giusto?
In generale credo proprio di sì, non sono ferrato in Html, cambia il concetto che in swing hai bisogno del ButtonGroup per legarli, forse in html bastava dare loro lo stesso attributo name (da una ricerca rapidissima, come detto non sono ferrato).
KuroKami69 ha scritto:
onestamente non ho capito come vorresti usare il jcheckbox.
volevo implementarne uno che, una volta spuntato converte i cavalli in kw, quindi mi trasforma tutta la colonna cavalli in kw, cambiando anche nome se possibile xD
Ti basta controllare quando aggiornerai la tabella se i checkbox sono selezionati richiamando su di loro il metodo isSelected (). Se sono selezionati mostrerai le righe corrispondenti, altrimenti no.
Filtrare la tabella non è immediato, ti consiglio di pensare prima al resto.
KuroKami69 ha scritto:
ho creato la mia arraylist popolandola con tante Automobili.
al momento non so come fare il binding, non ho capito se esiste un metodo ufficiale oracle, diciamo, oppure se devo prenderne uno fatto da altri, come quello che ho linkato prima, se ho capito bene.
fino a quando non ho una binding solution, per poter popolare la mia tabella, devo farmi un array di n posti, e ad ogni posto assegnare un metodo get della mia classe automobile, e poi inserirlo in 2 for per popolare la tabella, corretto? un'altra cosa.
la mia classe tabella devo aggiungere extend AbstractTabelModel vero?
Lascia stare il binding, fatti una semplice tabella prima, i costruttori di JTable e di DefaultTableModel sono più che sufficienti alle tue esigenze (e onestamente non ho nessuna voglia di mettermi a guardare video o leggermi la documentazione di classi esterne al framework) ...
Immagina di avere una classe Auto con i seguenti attributi: cilindrata, marca e prezzo, e relativi metodi get (ovviamente ne scrivo tre per semplicità, non cambia nulla con più attributi), e di volere costruire una tabella con le colonne "Prezzo", "Cilindrata" e "Marca", popolando le righe da una lista di oggetti Auto, chiamiamola listaAutomobili.
Questo è un semplice esempio di come farlo con DefaultTableModel, se vuoi usare un tuo modello che estende AbstractTableModel fa pure, ma non è la tabella che estende il modello:
// arrivi qui con un ArrayList <Auto> listaAutomobili, preso come ti pare.
Object [] columnNames = {"Prezzo", "Cilindrata", "Marca"};
DefaultTableModel model = new DefaultTableModel (columnNames, 0);
for (Auto auto : listaAutomobili) {
Object [] rowData = new Object [3];
rowData [0] = auto.getPrezzo ();
rowData [1] = auto.getCilindrata ();
rowData [2] = auto.getMarca ();
model.addRow (rowData);
}
JTable table = new JTable (model);
Questo è un esempio basico, magari usare Object non sarà il massimo, e con un tuo modello potresti essere più fine, ma questo è un punto di partenza, puoi adattarlo al tuo caso.
Trovi tutto questo nella
documentazione, e nei tutorial che già conosci.
Se vuoi imparare swing su internet non puoi andare avanti senza capire la documentazione, qui ti possiamo aiutare per problemi specifici o consigli su aspetti anche generali, ma devi riuscire a procedere in maniera un po' autonoma perché i componenti sono tanti e le cose da sapere ancora di più
EDIT: Modificato il parametro rowCount passato al costruttore del DefaultTableModel, se usi addRow () non devi specificare da prima il numero di righe.