È sufficiente creare due immagini di casella di controllo. Il primo senza tick e il secondo con tick. Ora aggiungi la prima immagine all'intestazione tableColumn. Successivamente aggiungi il listener a tableColumn in modo che quando fai clic sul pulsante per la prima volta, il metodo table.selectALL()
venga attivato insieme alla modifica dell'immagine dell'intestazione tableColumn sulla seconda. Quando si fa clic nuovamente sul pulsante, chiamare il metodo table.deSelectAll()
e sostituire l'intestazione tableColumn con la prima immagine.
È possibile utilizzare questa condizione:
Quando la casella di controllo (immagine) viene cliccato, utilizzare un ciclo for per verificare se, le caselle di controllo nella tabella sia selezionata. se qualcuno viene trovato, controllare quindi il metodo table.deSelectAll(), altrimenti il metodo table.selectAll() è attivato da .
Non ci saranno problemi per la "casella" durante il ridimensionamento tabella/vedova.
tableColumn0.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
// TODO Auto-generated method stub
boolean checkBoxFlag = false;
for (int i = 0; i < table.getItemCount(); i++) {
if (table.getItems()[i].getChecked()) {
checkBoxFlag = true;
}
}
if (checkBoxFlag) {
for (int m = 0; m < table.getItemCount(); m++) {
table.getItems()[m].setChecked(false);
tableColumn0.setImage(new Image(Display.getCurrent(),
"images/chkBox.PNG"));
table.deselectAll();
}
} else {
for (int m = 0; m < table.getItemCount(); m++) {
table.getItems()[m].setChecked(true);
tableColumn0.setImage(new Image(Display.getCurrent(),
"images/chkBox2.PNG"));
table.selectAll();
}
}
}
});
fonte
2011-06-28 06:11:40
Scusate la risposta lenta. Ho intenzione di provarlo per secoli. Ci provo e accetto se fa quello che penso che sarà :) Grazie! –
Nessun problema. Lascia un commento se non funziona come previsto. –