给你个小例子,已经添加注释了。自己运行下看看效果,满意的话记得结贴子!
十余年的京口网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整京口建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“京口网站设计”,“京口网站推广”以来,每个客户项目都认真落实执行。
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestMenu extends Frame implements ActionListener{
TextArea ta; //文本区
MenuBar mb; //MenuBar 类封装绑定到框架的菜单栏的
Menu mnFile,mnEdit,mnFormat,mnHelp; //从菜单栏部署的下拉式菜单组件
MenuItem miNew,miOpen,miSave,miSaveAs,miExit,miFont; //菜单中的所有项必须属于类 MenuItem 或其子类之一
CheckboxMenuItem miBinary; //一个可包括在菜单中的复选框
public TestMenu(){
super("记事本"); //调用父类构造方法
ta = new TextArea("",20,20); //新建文本区,第一个参数是默认文本,第二个参数是行数,第三个是列数
/*
* BorderLayout边框布局
* 添加文本区到Frame,BorderLayout.CENTER是居中位置
* */
add(ta,BorderLayout.CENTER);
mb = new MenuBar(); //创建菜单栏对象
/*
* 创建菜单,指定菜单名
* */
mnFile= new Menu("文件");
mnEdit= new Menu("编辑");
mnFormat= new Menu("格式");
mnHelp= new Menu("帮助");
/*
* 创建子菜单,并指定名称
* */
miNew= new MenuItem("新建");
miOpen= new MenuItem("打开");
miSave= new MenuItem("保存");
miSaveAs= new MenuItem("另存为");
miExit= new MenuItem("退出");
miExit.addActionListener(this); //为退出菜单添加监听
/*
* 添加上面创建的子菜单到文件菜单下
* */
mnFile.add(miNew);
mnFile.add(miOpen);
mnFile.add(miSave);
mnFile.add(miSaveAs);
mnFile.addSeparator(); //将一个分隔线或连字符添加到菜单的当前位置
mnFile.add(miExit);
miBinary= new CheckboxMenuItem("二进制"); //创建在复选框的子菜单
miFont= new MenuItem("字体"); //创建子菜单
/*
* 添加miBinary、miFont两个子菜单到mnFormat(格式)下
* */
mnFormat.add(miBinary);
mnFormat.add(miFont);
/*
* 将文件、编辑、格式、帮助添加到菜单栏
* */
mb.add(mnFile);
mb.add(mnEdit);
mb.add(mnFormat);
mb.add(mnHelp);
setMenuBar(mb); //添加菜单栏到Frame
/*
* 关闭窗口时,关闭运行成语
* */
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public static void main(String args[]){
TestMenu tm=new TestMenu();
tm.setSize(300,200); //设置窗体的宽、高
tm.setLocation(300,100); //将组件移到新位置Component类方法
tm.setVisible(true); //设置显示窗体,true为显示,false为隐藏
}
/**
* 监听事件,实现ActionListener接口的actionPerformed方法
*/
public void actionPerformed(ActionEvent e){
String s = e.getActionCommand(); //获取选中菜单的名称
System.out.println(s);
if(s.equals("退出")){
System.exit(0); //停止运行程序
}
}
}
Menu、JMenu类里的addSeparator()方法可以插入分割线。
如果要竖直的分割线可以直接用add(new JSeparator(JSeparator.VERTICAL ))方法
java.awt.Menu类里的insertSeparator方法在指定的位置插入分隔符。
public void insertSeparator(int index)
参数:
index - 菜单分隔符应插入的位置。
抛出:
IllegalArgumentException - 如果 index 的值小于 0。
没见过加竖杠的情况,也没看见你的图。。不过你要是想分类的话,可以在JMenu里加上另一个JMenu作为其附属菜单。
菜单Menu类的对象调用addSeparator();添加分割线,此行代码添加在你要分割线出现的位置上。
而创建复选菜单,用CheckboxMenuItem类创建菜单项就行。
至于多级菜单,只要把一个Menu类的对象添加到另一个Menu类的对象,就可以产生多级菜单了。
看代码:
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSplitPane;
import javax.swing.SwingConstants;
public class Main {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("JFrame with JSplitPane");
JLabel label1 = new JLabel("label1");
label1.setBackground(Color.BLUE);
label1.setVerticalAlignment(SwingConstants.TOP);//设置标签内容处于顶端
label1.setHorizontalAlignment(SwingConstants.CENTER);//设置内容居中
// 让组件变成不透明,这样在JLabel上所设置的颜色才能显示出来
label1.setOpaque(true);
JLabel label2 = new JLabel("label2");
label2.setBackground(Color.LIGHT_GRAY);
label2.setVerticalAlignment(SwingConstants.TOP);
label2.setHorizontalAlignment(SwingConstants.CENTER);
label2.setOpaque(true);
JLabel label3 = new JLabel("label3");
label3.setBackground(Color.RED);
label3.setVerticalAlignment(SwingConstants.TOP);
label3.setHorizontalAlignment(SwingConstants.CENTER);
label3.setOpaque(true);
//加入 label1,label2 到 splitPane1 中,并设置 splitPane1 为水平分割
JSplitPane splitPane1 = new JSplitPane(
JSplitPane.HORIZONTAL_SPLIT, false, label1, label2);
// 设置 splitPane1 的分隔线位置,0.4 是相对于 splitPane1 的大小而定
splitPane1.setDividerLocation(0.4);
splitPane1.setResizeWeight(0.4);
JSplitPane splitPane2 = new JSplitPane(
JSplitPane.VERTICAL_SPLIT, false, splitPane1, label3);
splitPane2.setDividerLocation(0.5);
splitPane2.setResizeWeight(0.5);
frame.add(splitPane2);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null); // 设置居中
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
运行结果:
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款