posso aggiungere il controllo combobox in particolare cella della JTable?
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?
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) {
}
}