Buonasera a tutti,
volevo chiedervi se è possibile inserire all'interno di un JDefaultTableModel una combo box e sua questo oggetto di tipo DefaultTableModel dovrebbe finire in una Jtable.
Grazie a tutti in anticipo
Buonasera a tutti,
volevo chiedervi se è possibile inserire all'interno di un JDefaultTableModel una combo box e sua questo oggetto di tipo DefaultTableModel dovrebbe finire in una Jtable.
Grazie a tutti in anticipo
Certo la maggioranza dei componenti Swing è possibile inserire nelle JTable
qui un piccolo esempio che ho preso in rete:
http://stackoverflow.com/questions/3...-a-jtable-cell
Ovviamente puoi crearti il tuo DefaultTableModel personale col comportamento che tu boi implementare e il TableCellEditor per ridefinirti il comportamento della cella per il JComboBox da usare.codice:import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.ArrayList; import javax.swing.*; import javax.swing.table.*; public class TableComboBoxByRow extends JFrame { List<TableCellEditor> editors = new ArrayList<TableCellEditor>(3); public TableComboBoxByRow() { // Create the editors to be used for each row String[] items1 = { "Red", "Blue", "Green" }; JComboBox comboBox1 = new JComboBox( items1 ); DefaultCellEditor dce1 = new DefaultCellEditor( comboBox1 ); editors.add( dce1 ); String[] items2 = { "Circle", "Square", "Triangle" }; JComboBox comboBox2 = new JComboBox( items2 ); DefaultCellEditor dce2 = new DefaultCellEditor( comboBox2 ); editors.add( dce2 ); String[] items3 = { "Apple", "Orange", "Banana" }; JComboBox comboBox3 = new JComboBox( items3 ); DefaultCellEditor dce3 = new DefaultCellEditor( comboBox3 ); editors.add( dce3 ); // Create the table with default data Object[][] data = { {"Color", "Red"}, {"Shape", "Square"}, {"Fruit", "Banana"}, {"Plain", "Text"} }; String[] columnNames = {"Type","Value"}; DefaultTableModel model = new DefaultTableModel(data, columnNames); JTable table = new JTable(model) { // Determine editor to be used by row public TableCellEditor getCellEditor(int row, int column) { int modelColumn = convertColumnIndexToModel( column ); if (modelColumn == 1 && row < 3) return editors.get(row); else return super.getCellEditor(row, column); } }; System.out.println(table.getCellEditor()); JScrollPane scrollPane = new JScrollPane( table ); getContentPane().add( scrollPane ); } public static void main(String[] args) { TableComboBoxByRow frame = new TableComboBoxByRow(); frame.setDefaultCloseOperation( EXIT_ON_CLOSE ); frame.pack(); frame.setVisible(true); } }
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
Ok buono a sapersi e grazie per la risposta, ora però non come collegare il tutto.
Ti riporto sotto il metodo che alla pressione di un pulsante deve aggiungere una riga in una tabella formata da 3 colonne "ComboBox", "normale", "normale"
tabellaTipiIntervento -> Jtable
modelloTipiIntervento -> DefaultTableModel
codice:private void pulsanteAggiungiTipoActionPerformed(java.awt.event.ActionEvent evt) { //TODO TEST Chiamata finestra di dialogo String[] patologie = new String[2]; patologie[0] = "abba"; patologie[1] = "rabarbaro"; JComboBox combo = new JComboBox(patologie); DefaultCellEditor dce3 = new DefaultCellEditor( combo ); modelloTipiIntervento = new DefaultTableModel(); tabellaTipiIntervento.setModel(modelloTipiIntervento); //modelloTipiIntervento.setValueAt("ciao", modelloTipiIntervento.getRowCount() - 1, 0); }
io t'ho dato l'esempio da li prendere quello che ti serve direi che è banale...
altrimenti te lo devo fare io....
creati il TableCellEditor per modellare il tuo JComboBox
e poi vedi dove ti blocchi
![]()
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
Salve a tutti, scusate l'intromissione ma sto avendo problemi analoghi nel comprendere le JTable devo stampare una lista di
oggetti come righe di una Jtable appunto, ma se creo il mio custom table model devo implementarmi io il metodo addRow()
che viene fornito da DefaultTableModel ?
beh si...devi fare l'override del metodo addrow....ma non capisco il senso della tua domanda
I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
Insieme sono una potenza che supera l'immaginazione.
A.Einstein
Semplicemente stavo pensando di estendere DefaultTableModel perchè implementa precchi metodi che mi servono e correggerne qualcun'altro come getColumnClass() e altri... invece di implementarmela dall'inizio una personalizzata...