注册 登录
编程论坛 JAVA论坛

为什么窗口右上角的X关闭按钮无效?

hhl0006 发布于 2016-05-13 08:20, 8046 次点击
import java.awt.*;
import java.awt.event.*;

public class ct extends Frame implements ActionListener
{

 static ct frm=new ct();
 static MenuBar mb=new MenuBar();
 static Menu menu0=new Menu("人事管理");
 static Menu menu1=new Menu("待遇管理");
 static Menu menu2=new Menu("系统维护");
 static Menu menu3=new Menu("用户管理");
 static Menu menu4=new Menu("帮助");

 static MenuItem mi0_1=new Menu("档案管理");
 static MenuItem mi0_2=new Menu("考勤管理");
 static MenuItem mi0_3=new Menu("奖惩管理");
 static MenuItem mi0_4=new Menu("培训管理");
 static MenuItem mi0_5=new MenuItem("关闭");
 
 static MenuItem mi1_1=new Menu("账套管理");
 static MenuItem mi1_2=new Menu("人员设置");
 static MenuItem mi1_3=new Menu("统计报表");
 
 static MenuItem mi2_1=new Menu("企业架构");
 static MenuItem mi2_2=new Menu("基本资料");
 static MenuItem mi2_3=new Menu("初始化系统");

 static MenuItem mi3_1=new Menu("新增用户");
 static MenuItem mi3_2=new Menu("选项");
 
 static MenuItem mi4_1=new Menu("帮助主题");
 static MenuItem mi4_2=new Menu("关于系统");

 public static void initGUI()
 {
  frm.setTitle("人力资源管理系统");
  mb.add(menu0);
  mb.add(menu1);
  mb.add(menu2);
  mb.add(menu3);
  mb.add(menu4);
  menu0.add(mi0_1);
  menu0.add(mi0_2);
  menu0.add(mi0_3);
  menu0.add(mi0_4);
  menu0.add(mi0_5);
  menu1.add(mi1_1);
  menu1.add(mi1_2);
  menu1.add(mi1_3);
  menu2.add(mi2_1);
  menu2.add(mi2_2);
  menu2.add(mi2_3);
  menu3.add(mi3_1);
  menu3.add(mi3_2);
  menu4.add(mi4_1);
  menu4.add(mi4_2);
  mi0_1.addActionListener(frm);
  mi0_2.addActionListener(frm);
  mi0_3.addActionListener(frm);
  mi0_4.addActionListener(frm);
  mi0_5.addActionListener(frm);
  mi1_1.addActionListener(frm);
  mi1_2.addActionListener(frm);
  mi1_3.addActionListener(frm);
  mi2_1.addActionListener(frm);
  mi2_2.addActionListener(frm);
  mi2_3.addActionListener(frm);
  mi3_1.addActionListener(frm);
  mi3_2.addActionListener(frm);
  mi4_1.addActionListener(frm);
  mi4_2.addActionListener(frm);
  frm.setSize(1366,740);
  frm.setBackground(Color.white);
  frm.setMenuBar(mb);
  frm.setVisible(true);
 }

 public static void main(String args[])
 {
  initGUI();
 }
 public void actionPerformed(ActionEvent e)
 {
  MenuItem mi=(MenuItem)e.getSource();
  if(mi==mi0_5)
     System.exit(0);
 }
 public void windowClosing(WindowEvent e)
 {
  frm=(ct)e.getSource();
  frm.setVisible(false);
  frm.dispose();
  System.exit(0);
 }
}
8 回复
#2
林月儿2016-05-13 17:46
程序代码:
package test1;

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

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Start extends JFrame implements ActionListener
{
    private static final long serialVersionUID = 1L;
    static Start frm=new Start();
    static JMenuBar mb=new JMenuBar();
    static JMenu[] JMenu=new JMenu[]{new JMenu("人事管理"),
    new JMenu("待遇管理"),new JMenu("系统维护"),
    new JMenu("用户管理"),new JMenu("帮助")};
    static JMenuItem[][] mi=new JMenuItem[][]{
        
        new JMenuItem[]{new JMenu("档案管理"),new JMenu("考勤管理"),
        new JMenu("奖惩管理"),new JMenu("培训管理"),
        new JMenuItem("关闭")},
   
        new JMenuItem[]{
        new JMenu("账套管理"),
        new JMenu("人员设置"),new JMenu("统计报表")},
   
        new JMenuItem[]{
        new JMenu("企业架构"),new JMenu("基本资料"),
        new JMenu("初始化系统")},
   
        new JMenuItem[]{new JMenu("新增用户"),
        new JMenu("选项")},
        
        new JMenuItem[]{new JMenu("帮助主题"),
        new JMenu("关于系统")}
    };
   
    public static void initGUI()
    {
        frm.setTitle("人力资源管理系统");
        for(int i=0;i<JMenu.length;i++){
            mb.add(JMenu[i]);
            for(JMenuItem mit:mi[i]){
                JMenu[i].add(mit);
                mit.addActionListener(frm);
            }
        }
        frm.setSize(1366,740);
        frm.setBackground(Color.white);
        frm.setJMenuBar(mb);
        frm.setVisible(true);
    }

    public static void main(String args[])
    {
        initGUI();
    }
    public void actionPerformed(ActionEvent e)
    {
        JMenuItem m=(JMenuItem)e.getSource();
        if(m==mi[0][4])
            System.exit(0);
    }
    public void windowClosing(WindowEvent e)
    {
        frm.setVisible(false);
        frm.dispose();
        System.exit(0);
    }
}
#3
hhl00062016-05-20 08:23
回复 2楼 林月儿
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\admin>d:

D:\>cd 测试

D:\测试>javac test.java
test.java:11: 错误: 类Start是公共的, 应在名为 Start.java 的文件中声明
public class Start extends JFrame implements ActionListener
       ^
1 个错误

D:\测试>
#4
林月儿2016-05-21 13:25
。。。你不是吧,类名和文件名要一致的,要么test.java改成Start.java
要么Start改成test
#5
hhl00062016-05-22 08:12
谢谢!我糊涂。但点击那X按钮关闭后,shell界面却无法继续输入文字,为什么?
#6
hhl00062016-05-22 08:14
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\admin>d:

D:\>cd 测试

D:\测试>java Start
#7
zs1272016-05-30 16:00
直接添加一句语句
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
#8
hhl00062016-06-05 08:07
还是不行。
#9
hhl00062016-06-12 11:08
已解决(添加窗口事件监听器)。谢谢!
1