Domanda

Voglio aggiungere combobox in una cella di JTable.

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

Ma non riesco a ottenere la combobox nella cella.È possibile impostare la casella combinata?

È stato utile?

Soluzione

È necessario impostare la TableCellEditor del JTable. E 'meglio cercare Tutorial Java, ma ecco un breve spiegare.

JTable utilizza tre classi principali di lavorare:

1) TableModel: la sua funzione è quella di dire quante righe e colonne della tabella ha e per servire i dati della tabella, è metodi principali sono getValue (riga, colonna) e setValue (valore, riga, colonna). E gli eventi di fuoco per notificare le ridipinge JTable.

2) TableCellRenderer: il suo scopo principale è di disegnare i componenti nelle cellule del JTable. Questi componenti sono verniciati solo: non funziona! se si disegna un JComboBox non sarà desplegate se si fa clic su di esso o se si disegna un JCheckBox si wont't selezionare / deselezionare.

3) TableCellEditor: il suo scopo principale è di tracciare un componente all'interno di un JTableCell per modificare il valore della cella. Riceve gli eventi e decidere quando iniziare il montaggio, allora è il metodo getTableCellEditorComponent è chiamato a restituire il componente editor di. Il componente restituito deve lanciare eventi in modo che il TableCellEditor sa quando per fermare l'editing e ottenere il valore e utilizzarlo per chiamare il TableModel.setvalue ... o annullare la modifica.

Quindi, che per mostrare JComboBox in una JTable è necessario creare il proprio TableCellEditor, non è un compito facile se non l'hai fatto prima.

Altri suggerimenti

Prendere alook a questo Java esercitazione e cercare in questa pagina di "Uso una casella combinata come un Editor "

Prova questo:il suo lavoro per me..fare clic sulla cella per vedere la combobox.

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top