对于一个多条件的查询,我们希望在选择了一个菜单项后,另外一个下拉菜单能够根据我们所选择的第一个菜单项显示其所有子菜单项.这就是本文提到的级联菜单问题.级联菜单实现的方法有很多,本文根据笔者所做的一个小实验,简单的介绍一下如何通过XML来实现级联菜单的功能.
首先要定义一个XML文件,用以存放级联菜单的信息,我们命名为query.xml,其代码如下:
info
course
text软件工程/text
value1/value
/course
text数据结构/text
text操作系统/text
text计算机组成原理/text
teacher
text张老师/text
/teacher
text李老师/text
text刘老师/text
text王老师/text
class
text一班/text
/class
text二班/text
text三班/text
text四班/text
/info
然后再创建一个HTML文件,命名为query.html
在query.html里,首先创建一个表单
form id="queryForm"
select id="keyword" name="keyword" onChange="showDetail()"
option value="default"default/option
option value="1"课程/option
/select
select id="content" name="content" onChange="showValue()"
/form
从上面的代码可以看出,当我们选择第一级菜单时,会触发showDetail方法,这是通过JavaScript来实现的,所以呢我们还需要定义一个showDetail方法,其实现代码如下:
function showDetail(){
var document_xml = new ActiveXObject("Microsoft.XMLDOM");
document_xml.load("query.xml"); //加载info.xml
var RootNode = document_xml.documentElement; //获得info.xml文档的根节点
var keyword = document.getElementByIdx("keyword").value;
var details; //用以存放二级菜单内容,是一个数组对象
var content = document.getElementByIdx("content");
content.options.length = 0;//先清空
if(keyword=="default"){
var option = new Option("default","default");
content.add(option);
}else{
if(keyword=="1"){
details = document_xml.getElementsByTagName_r("course");
details = document_xml.getElementsByTagName_r("teacher");
details = document_xml.getElementsByTagName_r("class");
}
for(var i=0;idetails.length;i++){
var xText = details[i].childNodes[0].firstChild.nodeValue; //获取文本
var xValue = details[i].childNodes[1].firstChild.nodeValue; //获取文本以应的值
var option = new Option(xText,xValue);
从上面的代码可以看出,showDetail方法会根据一级菜单选项的不同显示对应的子菜单.这里涉及到通过JavaScript来读取xml文件的操作,可以参见源码的注释部分,记得结合xml文件里的内容一起看哦.
二级菜单显示出来之后,我们就可以进行选择了,选择之后,会调用showValue方法,把选到的子菜单项的value和text显示出来.showValue的定义如下:
function showValue(){
var content= document.getElementByIdx("content");
var contentText = content.options[content.selectedIndex].text; //获取text值
var contentValue = document.getElementByIdx("content").value; //获取文本
alert(contentValue+" "+contentText);
在这个方法里,要注意option当中text值的获取,它与select表单域的value的获取方式不大一样,详见代码及其注释.
把两个方法封装在head/head之间,记得要写上script language="javascript"和/script了,然后你直接打开query.xml就可以看到效果了.
不知是否对楼主有用,希望对楼主有所帮助.
按你这程序可以在上级菜单判断返回值是否能整除10(也就是是否以0结尾),如果是,则上级菜单把上级命令代码末尾赋成0(也就是本级返回110,上级返回10),依次类推,在最顶级菜单里面接收到0直接break跳出循环.
这样是级联的退出,还有种比较简便的办法就是System.exit(0)直接终止程序.
如果只想跳上一级,可以返回-1之类的数字,让上一级菜单判断一下continue(或者什么都不做也行),把菜单刷一遍就行了.
①.,所谓级联下拉菜单就是动态的下拉菜单,
当第一级选中某一个选项是,
第二级会跟着第一级的变化而变化,
比如:当"学院"这一栏选择"信息学院"那么"专业"这一栏只会出现属于信息学院的专业.
public void itemStateChanged(ItemEvent e) {
try {
String sql = "select D_ID from xueyuanin WHERE
D_NAME='"+e.getItem()+"'"; // 获取该学院的代号
rs.next();
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyMenu extends JFrame{
JMenuBar jmbar=new JMenuBar();
JMenu jmenu=new JMenu("颜色");
JMenuItem jmt1=new JMenuItem("红色"),
JPanel jp=new JPanel();
MyMenu(){
setTitle("菜单测试");
setJMenuBar(jmbar);
jmbar.add(jmenu);
jmenu.add(jmt1);
add(jp);
jmt1.addActionListener(new MenuAction(this));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
public static void main(String[] args) {
new MyMenu();
class MenuAction implements ActionListener{
MyMenu m;
MenuAction(MyMenu m){
this.m=m;
public void actionPerformed(ActionEvent e){
String color=e.getActionCommand();
if(color=="红色")m.jp.setBackground(Color.red);
else if(color=="黄色")m.jp.setBackground(Color.yellow);
else if(color=="蓝色")m.jp.setBackground(Color.blue);
不知道你要什么事件代码,我写了个比较简单的你看适合不.
以上就是土嘎嘎小编为大家整理的菜单级联java代码相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!