Domanda

ho due JList su una GUI swing. Ora voglio che quando un utente fa clic su un pulsante (diciamo TransferButton) gli elementi selezionati da una JList viene aggiunto dal primo JList alla seconda JList e rimuovere gli elementi selezionati dal primo JList.

È stato utile?

Soluzione

Il modello non sa di selezione.

Il JList fornisce diversi metodi per ottenere l'elemento selezionato o indice selezionato. Utilizzare questi metodi per ottenere gli oggetti e aggiungerli al modello dell'altro lista.

Altri suggerimenti

Hai due JLists, allora si hanno anche i loro rispettivi ListModels. A seconda di come li implementato si può semplicemente rimuovere gli elementi da un modello e aggiungerli all'altra. Si noti, però, che l'interfaccia ListModel non si cura per più di accesso elemento per impostazione predefinita, quindi probabilmente è necessario implementare add e remove metodi lì da soli.

DefaultListModel leftModel = new DefaultListModel();
leftModel.addElement("Element 1");
leftModel.addElement("Element 2");
leftModel.addElement("Element 3");
leftModel.addElement("Element 5");
leftModel.addElement("Element 6");
leftModel.addElement("Element 7");

JList leftList = new JList(leftModel);

DefaultListModel rightModel = new DefaultListModel();
JList rightList = new JList(rightModel);

Immaginiamo di avere due componenti JList come descritto nel codice di cui sopra (sinistra e destra). È necessario scrivere codice riportato di seguito per trasferire i valori selezionati dalla sinistra alla destra JList.

for(Object selectedValue:leftList.getSelectedValuesList()){
    rightModel.addElement(selectedValue);
    leftModel.removeElement(selectedValue);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top