Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Why doesn't this jComboBox.setSelectedItem() work?

505 views
Skip to first unread message

kedwa...@gmail.com

unread,
Nov 29, 2012, 3:12:03 PM11/29/12
to
Hello, The problem I have is this: I add a list of items to my jcombobox, I then setSelectedItem to one of the items, BUT the combox box always goes to the first item. It seems to ignore the item I am saying to set as the selected item.

THIS DOESN'T WORK:
Vector model = new Vector();
Employee myItem = new Employee(1118,"me8");

model.addElement(new Employee(1112, "me2" ));
model.addElement(new Employee(1113, "me3" ));
model.addElement(new Employee(1114, "me4" ));
model.addElement(myItem);
model.addElement(new Employee(1115, "me5" ));

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(model));

Employee myItem2 = new Employee(1118,"me8");
jComboBox1.setSelectedItem(myItem2);


THIS DOES WORK:
Vector model = new Vector();
Employee myItem = new Employee(1118,"me8");

model.addElement(new Employee(1112, "me2" ));
model.addElement(new Employee(1113, "me3" ));
model.addElement(new Employee(1114, "me4" ));
model.addElement(myItem);
model.addElement(new Employee(1115, "me5" ));

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(model));

jComboBox1.setSelectedItem(myItem);

Lew

unread,
Nov 29, 2012, 3:20:05 PM11/29/12
to
kedwa...@gmail.com wrote:
> I add a list of items to my jcombobox, I then setSelectedItem to one of the items, BUT the combox box always goes to the first item. It seems to ignore the item I am saying to set as the selected item.
>
> THIS DOESN'T WORK:
> Vector model = new Vector();

Don't use raw types!

> Employee myItem = new Employee(1118,"me8");
> model.addElement(new Employee(1112, "me2" ));
> model.addElement(new Employee(1113, "me3" ));
> model.addElement(new Employee(1114, "me4" ));
> model.addElement(myItem);
> model.addElement(new Employee(1115, "me5" ));
>
> jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(model));
>
> Employee myItem2 = new Employee(1118,"me8");
> jComboBox1.setSelectedItem(myItem2);
>
> THIS DOES WORK:
>
> Vector model = new Vector();
> Employee myItem = new Employee(1118,"me8");
>
> model.addElement(new Employee(1112, "me2" ));
> model.addElement(new Employee(1113, "me3" ));
> model.addElement(new Employee(1114, "me4" ));
> model.addElement(myItem);
> model.addElement(new Employee(1115, "me5" ));
>
> jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(model));
>
> jComboBox1.setSelectedItem(myItem);

What's the implementation of 'Employee#equals()'?

--
Lew

Joerg Meier

unread,
Nov 30, 2012, 5:33:57 AM11/30/12
to
On Thu, 29 Nov 2012 12:12:03 -0800 (PST), kedwa...@gmail.com wrote:

> THIS DOESN'T WORK:
> Vector model = new Vector();
> Employee myItem = new Employee(1118,"me8");
>
> model.addElement(new Employee(1112, "me2" ));
> model.addElement(new Employee(1113, "me3" ));
> model.addElement(new Employee(1114, "me4" ));
> model.addElement(myItem);
> model.addElement(new Employee(1115, "me5" ));
>
> jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(model));
>
> Employee myItem2 = new Employee(1118,"me8");
> jComboBox1.setSelectedItem(myItem2);

At no point is myItem2 added to the JComboBox, so of course that doesn't
work. While you add myItem earlier, which has the same data (1118 and me8),
you explicitly declare myItem2 as a NEW Employee, and then never add it to
the JComboBox.

Liebe Gruesse,
Joerg

--
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.

Roedy Green

unread,
Nov 30, 2012, 9:16:08 PM11/30/12
to
On Thu, 29 Nov 2012 12:12:03 -0800 (PST), kedwa...@gmail.com wrote,
quoted or indirectly quoted someone who said :
see http://mindprod.com/jgloss/jcombobox.html
for sample code.

There are three ways to compare:
1. with == (in which case your two objects are not the same object)

2. with default equals ( which if you have not defined Employee.equals
defaults to == )

3. with custom Employee.equals (which you have to write)

setSelected Item compares against defined items with. .equals, not ==.

I usually do this with enums. Then your problem does not come up. The
possibilities are unique objects, even if created with valueOf.
--
Roedy Green Canadian Mind Products http://mindprod.com
Students who hire or con others to do their homework are as foolish
as couch potatoes who hire others to go to the gym for them.

Roedy Green

unread,
Nov 30, 2012, 9:52:34 PM11/30/12
to
On Thu, 29 Nov 2012 12:12:03 -0800 (PST), kedwa...@gmail.com wrote,
quoted or indirectly quoted someone who said :

0 new messages