黑马程序员技术交流社区

标题: GUI问题 [打印本页]

作者: 伍仪华    时间: 2011-7-21 17:38
标题: GUI问题
刚开始学GUI,下面这个程序,哪位修改一下,使窗口能够关闭,多谢了

import java.awt.*;
//创建一个框架对象,并且它的名称是“学生管理系统”。
//通过setSize方法来设置框架大小
//通过setVisible方法来设置框架显示
//按关闭按钮时结束窗体所在的应用程序
public class FrameTest {

public static void main(String[] args) {
  Frame frame = new Frame("学生管理系统");
  frame.setSize(300,200);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void setDefaultCloseOperation(int operation){
  
}
}
[ 本帖最后由 伍仪华 于 2011-07-21  17:39 编辑 ]
作者: 王松朝    时间: 2011-7-21 17:56
最后关闭窗口的方法上不对.
首先Frame 没有这样的关闭窗口的方法,其次你自己写的方法就没有被调用,第三,传递的常量也也没定义
你的本意应该是这样的代码吧:
class MyFrame extends JFrame{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
作者: BlackHorse    时间: 2011-7-21 18:10
Frame类没有frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
你可以把 Frame frame = new Frame("学生管理系统"); 修改成JFrame frame=new JFrame();

或者Frame frame = new Frame("学生管理系统");
frame.addWindowListener(new WindowAdapter()
{
    public void windowClosing(WIndowEvent event)
        {
                    dispose();
                     System.exit(0);
       }
})
作者: 匿名    时间: 2011-7-21 18:38
你理解错了, setDefaultCloseOperation()方法是Jframe中才有的,你那种想要自己实现方法是不实际的,没有实现监听器事件是不会触发的,除非你在你写的方法中有两种更改方法中写上监听器代码。最直接的方法就是将Frame改为JFrame再将你最后写的方法去掉。另外在编程中尽量使用swing 要比awt 简便快捷。
作者: 匿名    时间: 2011-7-21 18:46
关闭窗口办法:
1、使用监听器并且使用了匿名类和适配器  frame.addWindowListener(new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                                frame.dispose();
                        }
2.class MyWindowListener implements WindowListener{}  
定义一个自己的类,实现WindowListener,要覆盖
public void windowClosing(WindowEvent e) {
                                  ((Window)e.getComponent()).dispose();
                System.exit(0);}
在主函数中frame.addWindowListener(new YourMyWindowListener());
3、还有一种就是在自己框架中定义一个按钮,在让按钮实现这一功能
     Button bt=new Button("zsw");
         // 匿名内置类
          bt.addActionListener( new ActionListener(){
                  public void actionPerformed(ActionEvent e)
                  {
                        frame.dispose();
                          System.exit(0);
                  }
          });
你也可以自己查看API文档,自己去认真看看这些方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2