PDA

View Full Version : [JAVA] comboBox


AbuJaffa
03-06-2006, 18:19
Ciao a tutti. Volevo sapere se esiste un evento sulla comboBox che viene attivato solo quando si seleziona un suo elemento. Se utilizzo l'ACTION PERFORMED, purtroppo si attiva anche in fase di creazione della combo. A me servirebbe un evento scatenato solo quando viene selezionato un item della combo.
Grazie... :)

AbuJaffa
03-06-2006, 22:09
nessuno?? :(

^TiGeRShArK^
03-06-2006, 23:24
contentsChanged non va? :confused:
oppure qui ho trovato un esempio ke usa itemStateChanged:
http://www1.linkclub.or.jp/~yukos/english/java/example12.htm

AbuJaffa
03-06-2006, 23:41
potresti farmi un esempio di uso del contentsChanged? grazie mille... :)

AbuJaffa
04-06-2006, 13:44
up! :(

andbin
04-06-2006, 14:08
Scusa ... ma actionPerformed dovrebbe andare più che bene!

Prova questo:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ComboBoxTestFrame extends JFrame implements ActionListener
{
public ComboBoxTestFrame ()
{
super ("Test ComboBox");

setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250, 150);

JComboBox combo = new JComboBox (new String[] { "Uno", "Due", "Tre" });

combo.addActionListener (this);

add (combo, BorderLayout.NORTH);
}

public static void main (String[] args)
{
ComboBoxTestFrame f = new ComboBoxTestFrame ();
f.setVisible (true);
}

public void actionPerformed (ActionEvent e)
{
JComboBox cb = (JComboBox) e.getSource ();

String elemento = (String) cb.getSelectedItem ();
System.out.println (elemento);
}
}

AbuJaffa
04-06-2006, 14:29
Grazie per la risposta. Scusa un attimo... la mia situazione è questa: (prendo come esempio il tuo codice)


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ComboBoxTestFrame extends JFrame implements ActionListener
{
public ComboBoxTestFrame ()
{
super ("Test ComboBox");

setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250, 150);

JComboBox combo = new JComboBox();
combo.addActionListener (this);
add (combo, BorderLayout.NORTH);

combo.addItem("uno");
combo.addItem("due");
combo.addItem("tre");
}

public static void main (String[] args)
{
ComboBoxTestFrame f = new ComboBoxTestFrame ();
f.setVisible (true);
}

public void actionPerformed (ActionEvent e)
{
JComboBox cb = (JComboBox) e.getSource ();

String elemento = (String) cb.getSelectedItem ();
System.out.println (elemento);
}
}
}

come vedi, creo la checkbox e solo successivamente inserisco dei valori. Purtroppo, così facendo, alla creazione del primo elemento si scatena l'actio performed visualizzandomi il nome del primo componente. Dovrei fare in modo che ci sia un evento solo quando seleziono un item della check.
Esiste qulche cosa del genere?

AbuJaffa
04-06-2006, 14:31
infatti anche se faccio combo.setSelectedItem("tre"), si scatena l'actionPerformed. :muro:

andbin
04-06-2006, 15:17
infatti anche se faccio combo.setSelectedItem("tre"), si scatena l'actionPerformed. :muro:Beh, questo sì perché altrimenti nessun listener saprebbe cosa è successo e quindi non si potrebbe effettuare alcuna azione in seguito alla tua selezione da codice.

Puoi mettere il addItemListener alla fine del costruttore, dopo che hai fatto i vari addItem.