java中怎么实现多个下拉菜单的动态关联?

java中怎么实现多个下拉菜单的动态关联,比如说:学院和专业的关系,当选择学院时,专业这个下拉菜单中只会显示属于这个学院的专业。。。求高手赐教!... java中怎么实现多个下拉菜单的动态关联,比如说:学院和专业的关系,当选择学院时,专业这个下拉菜单中只会显示属于这个学院的专业。。。求高手赐教! 展开
 我来答
日语学习方法
2015-12-21 · 专注知识分享,快速学会外语
日语学习方法
采纳数:342 获赞数:6264

向TA提问 私信TA
展开全部
1,所谓级联下拉菜单就是动态的下拉菜单,
当第一级选中某一个选项是,
第二级会跟着第一级的变化而变化,
比如:当“学院”这一栏选择“信息学院”那么“专业”这一栏只会出现属于信息学院的专业。
2,级联下拉菜单的实现是运用itemStateChanged(ItemEvent )方法实现,首先在下拉菜单上注册ItemListener监视器,当下拉菜单选中时触发itemStateChanged(ItemEvent )事件重新给下一级下拉菜单赋值。
public void itemStateChanged(ItemEvent e) {
if(e.getSource() == xueyuan) { // 当点击学院下拉框时
try {
Statement stat2 = con.createStatement();
String sql = "select D_ID from xueyuanin WHERE
D_NAME='"+e.getItem()+"'"; // 获取该学院的代号
ResultSet rs = stat2.executeQuery(sql);
rs.next();
七竹水木
2011-07-18 · TA获得超过280个赞
知道小有建树答主
回答量:206
采纳率:57%
帮助的人:157万
展开全部
级联下拉菜单的实现。所谓级联下拉菜单就是动态的下拉菜单,当第一级选中某一个选项是,第二级会跟着第一级的变化而变化,比如:当“学院”这一栏选择“信息学院”那么“专业”这一栏只会出现属于信息学院的专业。级联下拉菜单的实现是运用itemStateChanged(ItemEvent )方法实现,首先在下拉菜单上注册ItemListener监视器,当下拉菜单选中时触发itemStateChanged(ItemEvent )事件重新给下一级下拉菜单赋值。给你一段代码看看,不懂得问我!
public void itemStateChanged(ItemEvent e) {
if(e.getSource() == xueyuan) { // 当点击学院下拉框时
try {
Statement stat2 = con.createStatement();
String sql = "select D_ID from xueyuanin WHERE
D_NAME='"+e.getItem()+"'"; // 获取该学院的代号
ResultSet rs = stat2.executeQuery(sql);
rs.next();
String s = rs.getString(1);
Statement stat3 = con.createStatement();
// 从数据库中寻找该学院的所有专业
String sql3 = "select M_NAME from zhuanyein WHERE D_ID="+s+"";
ResultSet rs3 = stat3.executeQuery(sql3);
zhuanye.removeAllItems(); // 首先移除所有的专业选项
while(rs3.next()) {
zhuanye.addItem(rs3.getString(1)); // 再把筛选到的// 专业重新赋给专业下拉框
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
if(e.getSource() == zhuanye) { // 当选中专业时
try {
Statement stat2 = con.createStatement();
// 获取该专业的代号
String sql = "select M_ID from zhuanyein WHERE
M_NAME='"+e.getItem()+"'";
ResultSet rs = stat2.executeQuery(sql);
rs.next();
String s = rs.getString(1);
Statement stat3 = con.createStatement();
// 从数据库中获取属于该专业的所有班级
String sql3 = "select C_NAME from banjiin WHERE
M_ID='"+s+"'";
ResultSet rs3 = stat3.executeQuery(sql3);
beizhu.removeAllItems(); // 首先移除已含班级
while(rs3.next()) {
beizhu.addItem(rs3.getString(1)); // 重新赋值
}
}catch (Exception ex) {
ex.printStackTrace();
}
}
}
追问
你这段代码连接了数据库???
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jseven_jy
2011-07-18 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1137万
展开全部
给下拉加个监听就是了。。

给你个例子吧。。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;

/**
* @author lmq
*
*/
public class TestCombo extends JFrame {

private static final long serialVersionUID = -8192792830119006730L;

public TestCombo() {
this.setLayout(null);
this.setBounds(100, 100, 200, 200);
JComboBox combo1 = new JComboBox();
combo1.addItem("计算机学院");
combo1.addItem("语言学院");
combo1.setBounds(0, 0, 200, 100);
final JComboBox combo2 = new JComboBox();
this.add(combo2);
combo2.setBounds(0, 100, 200, 100);
combo1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox combo = (JComboBox) e.getSource();
if (combo.getSelectedItem().equals("计算机学院")) {
combo2.removeAllItems();
combo2.addItem("软件工程");
combo2.addItem("信息管理");
combo2.addItem("计算机科学与技术");
} else {
combo2.removeAllItems();
combo2.addItem("英语");
combo2.addItem("德语");
combo2.addItem("法语");
}
}
});
this.add(combo1);
}

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

布局比较烂。。你将就看下吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TTT唐唐TTT
2011-07-18 · TA获得超过244个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:90.2万
展开全部
字段都存数据库的话,就用ajax吧,一级菜单一改变就更新二级菜单
追问
ajax是什么啊!我是菜鸟!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MrSocket
2011-07-18 · TA获得超过180个赞
知道答主
回答量:170
采纳率:0%
帮助的人:135万
展开全部
你是swing程序还是web程序。
追问
swing
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式