如果JComboBox1中有"张三","李四","张三"
JComboBox2中有"18","23","25"
选择JComboBox1中的第一个张三,则JComboBox2中显示为18,反之亦然
如果选项择JComboBox1中的第二个张三(也就是第三个),则JComboBox2中显示为25,反之亦然
这个要怎么弄啊??
getSelectedIndex()这个方法总是返回第一个匹配的项
也就是总是返回第一个张的年龄:18
JComboBox2中有"18","23","25"
选择JComboBox1中的第一个张三,则JComboBox2中显示为18,反之亦然
如果选项择JComboBox1中的第二个张三(也就是第三个),则JComboBox2中显示为25,反之亦然
这个要怎么弄啊??
getSelectedIndex()这个方法总是返回第一个匹配的项
也就是总是返回第一个张的年龄:18
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JApplet;
import javax.swing.JComboBox;
import javax.swing.JFrame;/**
* JComboBox根据Item的hashCode来定位元素.
*
* @author hezof
* @date 2007-12-28
*/
public class TJComboBox extends JApplet {
private JComboBox box1;
private JComboBox box2;
private static String[] names = { "张三", "李四", "张三" };
private static Integer[] ages = {16,25,18};
private ActionListener listner = new ActionListener() {
public void actionPerformed(ActionEvent event) {
JComboBox box = (JComboBox) event.getSource();
int index = box.getSelectedIndex();
box1.setSelectedIndex(index);
box2.setSelectedIndex(index);
}
}; private static class MyJComboBox extends JComboBox {
private static class Item {
static volatile long itemCount;
private Object item; private Item(Object item) {
this.item = item;
} public String toString() {
return item.toString();
} public int hashCode() {
itemCount++;
return (int) (itemCount ^ (itemCount >>> 32));
} static Item[] valueOf(Object[] items) {
Item[] result = null;
result = new Item[items.length];
for (int i = 0; i < result.length; i++) {
result[i] = new Item(items[i]);
}
return result;
}
} public MyJComboBox(Object[] obj) {
super(Item.valueOf(obj));
}
} public void init() {
Container content = getContentPane();
Box box = Box.createHorizontalBox();
box.setBorder(BorderFactory.createTitledBorder("box"));
box1 = new MyJComboBox(names);
box1.addActionListener(listner);
box2 = new MyJComboBox(ages);
box2.addActionListener(listner);
box.add(box1);
box.add(box2);
content.add(box, BorderLayout.NORTH);
}
public static class Tester{
public static void main(String[] args){
JFrame frm=new JFrame();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(400,300);
TJComboBox tbox=new TJComboBox();
tbox.init();
frm.getContentPane().add(tbox);
frm.setVisible(true);
}
}
}