View Full Version : [JAVA] Help me: Jlist... :(
Ho un problema in Java con una JList: praticamente all'atto del click del mouse su un elemento della JList mi deve stampare a video (con una System.out.println) tale elemento.
L'algoritmo che ho creato funziona (ho associato all'evento MouseClicked tale algoritmo) però funziona su tutti gli elementi della JList tranne che... per l'ultimo!!!! Sia i metodi GetSelectedValue() che GetSelectedIndex() non sembrano funzionare sull'ultimo elemento della JList.
Com'è possibile? :cry:
:help:
L'algoritmo che ho creato funziona (ho associato all'evento MouseClicked tale algoritmo)Ti conviene usare un ListSelectionListener, non MouseListener.
Ti conviene usare un ListSelectionListener, non MouseListener.
Come ListSelection ho solo il "value changed"
Grazie per l'aiuto ;)
Non capisco il dubbio/problema. Se devi solo "ascoltare" quando qualcosa cambia nella selezione allora va bene ListSelectionListener. Se invece devi fare qualcosa ogni volta che fai click sulla JList allora va bene MouseListener.
Nessuno dei due listener fornisce informazioni dirette su quale è l'elemento o gli elementi selezionati in quel momento. Questa è una informazione che devi ricavare tu dal JList.
Sia che usi MouseListener oppure ListSelectionListener, se vuoi sapere esattamente quale è la selezione, allora devi usare i vari getSelectedIndex(), getSelectedIndices(), ecc.... a seconda del modo di selezione impostato.
Se usi MouseListener puoi anche sapere quale è l'elemento interessato dall'evento perché con il Point dell'evento puoi sapere l'indice nella JList usando locationToIndex().
Sei tu che devi scegliere.
Sia che usi MouseListener oppure ListSelectionListener, se vuoi sapere esattamente quale è la selezione, allora devi usare i vari getSelectedIndex(), getSelectedIndices(), ecc.... a seconda del modo di selezione impostato.
E' questo il problema: getselectedindex e getselectedelement funzionano su tutti gli elementi della jlist tranne che per l'ultimo! :cry:
Ad es. ho fatto una prova per verificarne il funzionamento: quando col click del mouse si clicca su un elemento, stampa il nome dell'elemento e l'indice nella jlist. La stampa a video avviene per tutti gli elementi della lista correttamente, TRANNE che per l'ultimo elemento.
E' questo il problema: getselectedindex e getselectedelement funzionano su tutti gli elementi della jlist tranne che per l'ultimo! :cry:Mi sembra molto strano .... posta il codice.
Ecco qua:
[...]
DefaultListModel modellopanini = new DefaultListModel();
[...]
private void ListaPanini1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ListaPanini1MouseClicked
if (modellopanini.isEmpty()==false){
for (int I=0; I<Prodotti.size()-1; I++){
// if (modellopanini.get(ListaPanini1.getSelectedIndex()).equals(Prodotti.get(I).nome)==true){
if (ListaPanini1.getSelectedValue().equals(Prodotti.get(I).nome)==true){
System.out.println(ListaPanini1.getSelectedIndex());
System.out.println(ListaPanini1.getSelectedValue());
jTextField6.setText(String.valueOf(Prodotti.get(I).prezzo));
}
}
}
}//GEN-LAST:event_ListaPanini1MouseClicked
A parte il solito codice del c...avolo autogenerato da un IDE, io vedo solo una cosa: hai fatto un ciclo for con la condizione I<Prodotti.size()-1. In tale modo l'ultimo elemento in Prodotti sicuramente non viene preso in considerazione.
:doh: :doh: :doh:
Mi sono dimenticato di togliere quel -1 !!
L'avevo inserito prima per prova, poi ho copincollato quel pezzo di codice all'interno di quel listener object e mi sono dimenticato di togliere il -1
Che errore demente! :muro: :muro:
Ti ringrazio moltissimo ;)
Problema risolto! :winner:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.