Aggiungere testo e icona (con MouseListener) per colonna JTable
-
19-09-2019 - |
Domanda
Voglio realizzare seguenti funzionalità ma sono confuso se è possibile in Java. Se sì, che come? Please help:
Voglio creare una sorta di JTable tavolo dove 1 ° fila di tabella contiene nomi di colonna e un'icona in ogni colonna vale a dire in ogni cella di 1 ° fila. Cliccando su tale icona dovrebbe portare alla rimozione di tale colonna dalla tabella (possibile utilizzando MouseListener ??).
Ho trovato molti soluzione in cui posso pulsante Aggiungi per una cella in JTable ma nessuno che descrive l'aggiunta di testo e icona (con MouseListener) per una cella. Si prega di vedere se si può aiutare e grazie mille per la lettura.
Soluzione
È possibile creare una TableCellRenderer
personalizzato che si estende JLabel
. Questo JLabel
può essere creato con un'icona (JLabel
può visualizzare le icone, a destra oa sinistra del testo). Si vuole il getTableCellRendererComponent
per testare wether riga viene eseguito il rendering è il primo o no, e se è così, impostare l'icona, altrimenti no.
Per l'azione di rimozione, è possibile aggiungere un MouseListener
sul tavolo, e durante l'elaborazione del metodo mouseClicked
, è possibile trovare la cella che è stato cliccato in testando la rowAtPoint
e columnAtPoint
creando un Point
dal mouseEvent.getX()
e mouseEvent.getY()
. Se si determina la prima fila con l'icona di stato cliccato, è possibile rimuovere la colonna dal modello di colonna.
Se da 1 ° fila , in realtà si intende l'intestazione della tabella, è possibile creare lo stesso renderer per il JTableHeader
, e impostare il MouseListener
su tale componente.
Altri suggerimenti
Beh, non capisco la tua domanda.
Voglio creare una sorta di JTable tavolo dove prima riga della tabella contiene nomi di colonna e un'icona
Vuoi dire la tabella di intestazione, come il modo in cui l'ordinamento opere visualizzando il nome della colonna e la direzione di ordinamento?
Se è così allora si utilizza un renderer personalizzato per l'intestazione della tabella e aggiungere un MouseListener per l'intestazione per determinare quale colonna è stato fatto clic. Si dovrebbe essere in grado di personalizzare il predefinito Tabella intestazione Renderer per fare quello che vuoi.
O vuoi dire la prima riga di dati nella tabella. Se è così allora è ancora necessario utilizzare un renderer personalizzato, ma questa volta si aggiunge il MouseListener al tavolo non l'intestazione della tabella.
In entrambi i casi è possibile utilizzare il metodo TableColumnModel.removeColumn () per rimuovere la colonna dalla vista della tabella.