Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    40

    JComboBox in una tabella

    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

  2. #2
    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

    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);
        }
    }
    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.
    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

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    40
    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);
             
        }

  4. #4
    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

  5. #5
    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 ?

  6. #6
    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

  7. #7
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.