|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2005
Messaggi: 99
|
[JAVA] JComboBox in ArrayList
Salve a tutti,
sto sviluppando un'applicazione nella quale è possibile aggiungere delle "Attività" dove ognuna ha vari campi di inserimento dati. Screenshot di riferimento: ![]() Avrei bisogno di implementare un ItemListener in modo da far corrispondere un'azione quando si cambia l'item di una delle JComboBox. Ogni attività è memorizzata in un ArrayList e i campi di ciascuna attività a sua volta sono memorizzati in altri ArrayList (uno per ogni attività). Nel momento in cui si ha una JComboBox è evidente che il listener può riferirsi solo a lei, ma in questo caso? Ho necessità di farmi restituire il numero di attività per la quale è stato scatenato l'evento dalla corrispondente JComboBox. Ci sto sbattendo la testa da ieri, ma fino ad ora non ne sono venuto a capo. Qualche idea? Grazie anticipatamente. Ciao, Francesco |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Immagino il listener che ti interessi sia l'actionListener.
Puoi recuperare il componente che ha scatenato l'evento in questo modo: Tipo: Codice:
// l'actionListener dei JComboBox:
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
// ...
}
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2005
Messaggi: 99
|
Ciao banryu, innanzitutto ancora grazie per la tua disponibilità!
Allora, il listener interessato è l'ItemListener (ho bisogno di passare ad un metodo sia l'indice dell'attività, sia l'item selezionato). Avevo già pensato di recuperare l'evento in quel modo, in seguito però mi son "bloccato" sull'indexOf dell'Array dell'attività, o meglio avevo scritto: Codice:
int index = activitiesArray.indexOf((JComboBox)item.getSource()); Per spiegarmi meglio: Codice:
ArrayList activitiesArray = new ArrayList(); //Ogni attività viene aggiunta in questo modo: activitiesArray.add(new ArrayList()); |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jun 2005
Messaggi: 99
|
Ok, risolto con una semplice ricerca ciclica. Incollo tutto il codice relativo al listener, nel caso possa tornare utile a qualcuno!
Codice:
class DistributionListener implements ItemListener {
public void itemStateChanged (ItemEvent item) {
int index = -1;
String itemSelected = (item.getItem()).toString();
for(int i=0; i<activitiesNumber;i++) {
if((JComboBox)((ArrayList)activitiesArray.get(i)).get(3) == ((JComboBox)item.getSource()))
index = i;
}
paramChanging(index, itemSelected);
//Refresh MainPanel
repaint();
}
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:09.




















