2009-09-25 25 views

risposta

32

Non aggiungerlo a una riga: lo aggiungi alla cella. This tutorial descrive ciò che ti serve.

+2

ok, Grazie Droidln.net –

+7

Non c'è bisogno di ringraziare, basta spuntare il segno :) – Bostone

+2

waw! Ho appena aperto che l'esempio e si rese conto che il codice sorgente ha aggiunto un "nuovo JCheckBox" al CellEditor. Ma in realtà reso come JButton. Ad ogni modo, la mia domanda è, perché dovremmo inserire JCheckBox? :( – gumuruh

20

È possibile aggiungere Componente come cella di tabella.

Prima di tutto, è necessario implementare una classe che abbia JButton come classe genitore e due interfacce TableCellRenderer e TableCellEditor.

Il motivo che dovrebbe implementare TableCellEditor è per ricevere ActionEvent del pulsante.

Quindi, ho aggiunto un EventListener denominato TableButtonListener per la gestione degli eventi del pulsante come segue.

public interface TableButtonListener extends EventListener { 
    public void tableButtonClicked(int row, int col); 
} 

E utilizzare sopra Renderer/Editor.

TableButton buttonEditor = new TableButton("Button"); 
buttonEditor.addButtonListener(new TableButtonListener() { 
    @Override 
    public void tableButtonClicked(int row, int col) { 
    // do something 
    }  
}); 

TableColumn col = new TableColumn(1, 80); 
col.setCellRenderer(buttonEditor); 
col.setCellEditor(buttonEditor); 

cols.addColumn(colPattern); 

Se si desidera visualizzare l'etichetta del pulsante diverso per ogni riga, si dovrebbe inserire blocco di codice nella getTableCellRendererComponent e getTableCellEditorComponent, che è quello di modificare l'etichetta del pulsante.

modifica: il codice viene compilato ora. Risolto errore di bracketing nel costruttore TableButton.

+0

Grazie xrath per l'aiuto. –

+3

-1 questa è un'implementazione illegale di CellEditor: by contratto, _deve_ notifica CellEditorListeners registrati. il che è banalmente gergo con il vuoto attuazione dei contratti Super del addEditorListener ;-) _deve_ essere servito da implementazioni, alcun modo per aggirare. – kleopatra

+1

ho provato, ed ho ottenuto .... indefinito 'ascoltatore' variabile ... che cos'è? :( – gumuruh

Problemi correlati