Reflex86
28-02-2009, 10:23
Ciao a tutti, praticamente la situazione è questa: ci sono 12 unità, ognuna delle quali ha 5 ripetitori. Ogni unità ha un numero id, da 1 a 12. Ogni ripetitore ha un valore da 1 a 16. I ripetitori di ciascuna unità inizialmente hanno tutti i valori da 1 a 16 eccetto il numero id della centralina (es se sto sulla centralina 5, posso selezionare al primo ripetitore da 1 a 16 tranne 5), e nel momento in cui seleziono un valore sul ripetitore, questo deve sparire da tutti gli altri 4. I valori vanno immessi in ordine, dal primo all'ultimo, se il quarto ad esempio è disabilitato lo deve essere anche il quinto.
Ora io ho fatto in questa maniera, però talvolta quando metto un valore scompaiono alcuni gia immessi e non capisco il motivo, però sono sicuro che c'è qualche modo più pratico e semplice per farlo, qualcuno mi può aiutare? Grazie
class RepeaterListener implements ActionListener{
public void actionPerformed(ActionEvent event)
{
if (rept_check){
rept_check = false;
String prev = "";
String temp = "";
//memorizzo i valori gia selezionati su un array
for (int i=0; i<temp_array.length; i++){
temp_array[i] = (String)repeater[i].getSelectedItem();
}
//qui inizia il metodo
for (int sel=0; sel<repeater.length; sel++){
if (event.getSource().equals(repeater[sel])) //se il nuovo valore selezionato su uno dei 5 rep è gia pres.
for (int oth=0; oth<repeater.length; oth++)
if (oth!=sel)
{
prev = (String)repeater[oth].getSelectedItem(); //salvo il valore gia presente negli altri
repeater[oth].removeAllItems(); //tolgo tutto e poi ripopolo per rimettere i
repeater[oth].addItem("None"); // vecchi numeri eventualmente tolti
for (int ripop=0; ripop<REPEATERS; ripop++)
if(unit.getId()!=ripop+1)
repeater[oth].addItem(""+(ripop+1));
for (int l=0; l<repeater[oth].getItemCount(); l++)
{
temp = (String) repeater[oth].getItemAt(l);
if (temp.equals(prev))
{
repeater[oth].setSelectedIndex(l); //rimposto il valore gia presente prima
if (!temp.equals("None")) //che togliessi e ripopolassi tutto
unit.generalsetup.repeateraddr[oth] = Integer.parseInt(repeater[oth].getItemAt(l).toString());
else
unit.generalsetup.repeateraddr[oth] = 0;
}
if (StringArraySearch(temp_array, temp, oth)) //se nell'array di valori gia messi
{ //trovo quello selezionato attualmente
System.out.println("Removed: "+temp); // li elimino da tutti (eccetto dall'attuale)
repeater[oth].removeItemAt(l);
}
}
}
}
rept_check = true;
}
}
}
Ora io ho fatto in questa maniera, però talvolta quando metto un valore scompaiono alcuni gia immessi e non capisco il motivo, però sono sicuro che c'è qualche modo più pratico e semplice per farlo, qualcuno mi può aiutare? Grazie
class RepeaterListener implements ActionListener{
public void actionPerformed(ActionEvent event)
{
if (rept_check){
rept_check = false;
String prev = "";
String temp = "";
//memorizzo i valori gia selezionati su un array
for (int i=0; i<temp_array.length; i++){
temp_array[i] = (String)repeater[i].getSelectedItem();
}
//qui inizia il metodo
for (int sel=0; sel<repeater.length; sel++){
if (event.getSource().equals(repeater[sel])) //se il nuovo valore selezionato su uno dei 5 rep è gia pres.
for (int oth=0; oth<repeater.length; oth++)
if (oth!=sel)
{
prev = (String)repeater[oth].getSelectedItem(); //salvo il valore gia presente negli altri
repeater[oth].removeAllItems(); //tolgo tutto e poi ripopolo per rimettere i
repeater[oth].addItem("None"); // vecchi numeri eventualmente tolti
for (int ripop=0; ripop<REPEATERS; ripop++)
if(unit.getId()!=ripop+1)
repeater[oth].addItem(""+(ripop+1));
for (int l=0; l<repeater[oth].getItemCount(); l++)
{
temp = (String) repeater[oth].getItemAt(l);
if (temp.equals(prev))
{
repeater[oth].setSelectedIndex(l); //rimposto il valore gia presente prima
if (!temp.equals("None")) //che togliessi e ripopolassi tutto
unit.generalsetup.repeateraddr[oth] = Integer.parseInt(repeater[oth].getItemAt(l).toString());
else
unit.generalsetup.repeateraddr[oth] = 0;
}
if (StringArraySearch(temp_array, temp, oth)) //se nell'array di valori gia messi
{ //trovo quello selezionato attualmente
System.out.println("Removed: "+temp); // li elimino da tutti (eccetto dall'attuale)
repeater[oth].removeItemAt(l);
}
}
}
}
rept_check = true;
}
}
}