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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top