求助!!java swing 的二级联动菜单 急!!! 写一个楼房管理的模块 现在要实现一个二级联动菜单创建了两个Comobox组件,第一个组件item内容为 房屋编号,第二个组件Item内容为房间编号要求第一个Comobox组件内的Item由数据库里查询出,第二个Comobox以第一个Comobox组件选择的的Item为关键字查询出数据,请教高手如何实现!尽量详细,谢谢!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一步是先从数据得到你所有的列表(条件),放入第一个Comoboox给你第一个 Comobox addItemListener(ItemListener aListener) 实现里面的 itemStateChanged 方法,然后联动 查询数据库 然后更新 第二个 Comobox public class Frame1 extends JFrame { private JComboBox jComboBox1 = new JComboBox(); private JComboBox jComboBox2 = new JComboBox(); private JLabel Label1 = new JLabel(); private JLabel jLabel2 = new JLabel(); private Map _map = new HashMap(); public Frame1() { try { jbInit(); init(); } catch (Exception ex) { ex.printStackTrace(); } } private void jbInit() throws Exception { this.getContentPane().setLayout(null); jComboBox1.setBounds(new Rectangle(99, 31, 113, 30)); jLabel2.setToolTipText(""); this.getContentPane().add(jComboBox1); jLabel2.setText("房间编号"); jLabel2.setBounds(new Rectangle(16, 100, 69, 29)); Label1.setText("房屋编号:"); Label1.setBounds(new Rectangle(21, 33, 71, 29)); this.getContentPane().add(Label1); this.getContentPane().add(jLabel2); this.getContentPane().add(jComboBox2); jComboBox2.setBounds(new Rectangle(99, 95, 115, 32)); jComboBox1.addItemListener(new ItemHandler()); this.setSize(500,500); } private void init() { initMap(); Iterator it = _map.keySet().iterator(); while(it.hasNext()) { String key = (String) it.next(); jComboBox1.addItem(key); } } private void initMap() { List list = new ArrayList(); list.add("01"); list.add("02"); list.add("03"); _map.put("No 1", list); list = new ArrayList(); list.add("04"); list.add("05"); list.add("06"); _map.put("No 2", list); } private class ItemHandler implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) { return; } Object object = e.getSource(); jComboBox2.removeAllItems(); if (object == jComboBox1) { String key = (String) jComboBox1.getSelectedItem(); List list = (List)_map.get(key); if(null != list && !list.isEmpty()) { for(int i = 0 ; i < list.size(); i++) { String value = (String)list.get(i); jComboBox2.addItem(value); } } } } }}希望对你有帮助,这是我辛辛苦苦写的哦根据你的需求改改就可以了。 Java新人求指教 java 画图 java新手 分数少了点希望大家能帮我理解一下THIS 谁能帮实现这个方法? 急,请高手赐教!一个有关剪切板操作的问题! 我该怎样用jdk1.5啊??? java == 运算符 请问,如何导入自己写的类, 怎样在Jbuilder3/4中安装使用javamail包? JSP中一个很郁闷的问题,请高手进来指点 Java相关的书集问题???
private JComboBox jComboBox1 = new JComboBox();
private JComboBox jComboBox2 = new JComboBox();
private JLabel Label1 = new JLabel();
private JLabel jLabel2 = new JLabel(); private Map _map = new HashMap();
public Frame1() {
try {
jbInit();
init();
} catch (Exception ex) {
ex.printStackTrace();
}
} private void jbInit() throws Exception {
this.getContentPane().setLayout(null);
jComboBox1.setBounds(new Rectangle(99, 31, 113, 30));
jLabel2.setToolTipText("");
this.getContentPane().add(jComboBox1);
jLabel2.setText("房间编号");
jLabel2.setBounds(new Rectangle(16, 100, 69, 29));
Label1.setText("房屋编号:");
Label1.setBounds(new Rectangle(21, 33, 71, 29));
this.getContentPane().add(Label1);
this.getContentPane().add(jLabel2);
this.getContentPane().add(jComboBox2);
jComboBox2.setBounds(new Rectangle(99, 95, 115, 32));
jComboBox1.addItemListener(new ItemHandler());
this.setSize(500,500);
}
private void init() {
initMap();
Iterator it = _map.keySet().iterator();
while(it.hasNext()) {
String key = (String) it.next();
jComboBox1.addItem(key);
}
} private void initMap() {
List list = new ArrayList();
list.add("01");
list.add("02");
list.add("03");
_map.put("No 1", list);
list = new ArrayList();
list.add("04");
list.add("05");
list.add("06");
_map.put("No 2", list);
}
private class ItemHandler implements ItemListener {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.DESELECTED) {
return;
}
Object object = e.getSource();
jComboBox2.removeAllItems();
if (object == jComboBox1) {
String key = (String) jComboBox1.getSelectedItem();
List list = (List)_map.get(key);
if(null != list && !list.isEmpty()) {
for(int i = 0 ; i < list.size(); i++) {
String value = (String)list.get(i);
jComboBox2.addItem(value);
}
}
}
}
}
}希望对你有帮助,这是我辛辛苦苦写的哦
根据你的需求改改就可以了。