Hej, Hej, Hej,JCombobox, actionlistener
När jag lägger till en "item" i en JCombobox jag har anropas actionListener. Borde det vara så? Trodde att det var en "action" bara om jag klickade i den comboboxen och valde en "item".
Här är min kod:
//Denna koden finns i en klass
public void setDropDownMenu(Vector dateval)
{
if (dateval.size()!=0)
{
for (int i=0; i<=dateval.size(); i++)
{
connectedView.ListFrom.addItem(dateval.get(i));
connectedView.ListTo.addItem(dateval.get(i));
}
}
}
//Denna koden finns i en annan klass
ListFrom.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ListFrom_actionPerformed(e);
}
});
ListTo.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ListTo_actionPerformed(e);
}
});
/*ActionListener for the "Date from" combobox*/
public void ListFrom_actionPerformed(ActionEvent e)
{
fromSelected=ListFrom.getSelectedItem();
}
/*ActionListener for the "Date to" combobox*/
public void ListTo_actionPerformed(ActionEvent e)
{
toSelected=ListTo.getSelectedItem();
PutSelectedDatesToVector();
}
Tack på förhand
/A Sv: JCombobox, actionlistener
Har testat lite nu och det verkar som om det är en "action" när man lägger till "items" i en combobox. Testade att istället definiera en strängvektor i början av klassen och och sätta strängarna när jag vill lägga nåt i comboboxen. Detta funkar utan att "action_performed" anropas. Problemet är att jag inte kan göra på detta viset. Jag vet inte hur stor min strängvektor blir men gör jag på detta sättet måste jag definiera storleken på den. Är det någon som har ett tips på hur jag kan göra istället?
Ex. Detta funkar fint:
string [] s= new String[2]
.
.
.
public void additemsToCombo()
{
s[0]="hej";
s[1]="jjjj";
}
Finns det nåt sätt som motsvarar detta fast där jag inte behöver sätta storleken?
Tack
/A Sv: JCombobox, actionlistener
Du kan ju testa att använda en ItemListener istället för en ActionListner; "When an item-selection event occurs, the listener object's itemStateChanged method is invoked.
".
Vad du använder i ditt andra exempel är inte en Vector utan en string array. Men du kan använda en java.util.Vector att initialisera en combo box med utan att ange en specifik storlek på denna.
<code>
Vector oItems = new Vector();
JComboBox = new JComboBox(oItems);
oItems.add("item1");
</code>
Men testa ItemListener om du bara är ute efter att fånga val av items.
/Klas