java 24 - 7 GUI之 创建多级菜单窗体

时间:2023-03-09 13:22:05
java 24 - 7 GUI之 创建多级菜单窗体

需求:
  创建多级菜单

步骤:
  A:创建窗体对象(并设置属性和布局)
  B:创建菜单栏
  C:创建菜单和子菜单
  D:逐步添加菜单(子菜单添加到菜单中,菜单添加到菜单栏中)
  E:窗体中设置菜单栏(菜单栏并不是添加,而是设置)
  F:设置各个菜单对应的监听事件
  G:设置窗体关闭监听时间
  H:设置显示窗口

代码:

 public class FrameText4 {

     public static void main(String[] args) {

         // 创建窗体对象
final Frame f = new Frame("多级菜单");
// 设置窗体属性
f.setBounds(300, 300, 500, 500);
f.setLayout(new FlowLayout()); //获取原来的标题
final String str = f.getTitle(); // 创建菜单栏
MenuBar m = new MenuBar(); // 创建菜单
Menu m1 = new Menu("操作");
Menu m2 = new Menu("更改标题"); // 创建子菜单
final MenuItem mi1 = new MenuItem("N级菜单");
final MenuItem mi2 = new MenuItem("M级菜单");
MenuItem mi3 = new MenuItem("恢复标题");
MenuItem mi4 = new MenuItem("退出");
MenuItem mi5 = new MenuItem("打开记事本"); // 逐步添加
// 子菜单添加到菜单中
m2.add(mi1);
m2.add(mi2);
m2.add(mi3);
m1.add(m2);
m1.add(mi5);
m1.add(mi4); // 菜单添加到菜单栏中
m.add(m1); // 窗体中设置菜单栏
f.setMenuBar(m); // 设置各个菜单对应的监听事件
mi1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
// 更改标题栏的名称
// 为了以后方便修改,首先获取mi1菜单的名称,再进行更改
f.setTitle(mi1.getLabel());
// 把窗口的标题名称改为mi1的标签
}
}); mi2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
//如mil1
f.setTitle(mi2.getLabel());
} }); mi3.addActionListener(new ActionListener(){
//这个跟上面2个有所不同,因为是恢复原来的标题。
//所以得在前面创建个字符串得到开始的标题,然后直接拿来更改就可以
public void actionPerformed(ActionEvent e) {
f.setTitle(str);
}
}); //退出系统
mi4.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
//退出系统
System.exit(0);
} }); //打开记事本
mi5.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
//Runtime 使应用程序能够与其运行的环境相连接
//public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象。
//public Process exec(String command)在单独的进程中执行指定的字符串命令。 Runtime r = Runtime.getRuntime();
try {
r.exec("notepad");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} } }); //设置窗口关闭监听事件
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}); //使窗体显示
f.setVisible(true);
} }