分别使用Frame和JFrame新建可关闭窗体及二者异同

在学习java的GUI界面的时候,第一步就是窗体的实现。用java代码实现窗体有两个包可以使用,分别是java.Awt和javax.Swing

但是前者需要调用本地系统方法实现功能(属重量级控件),而后者是在AWT的基础上建立的一套图形界面系统,其中提供了

更多的组件,而且完全由Java实现(增强了移植性,属轻量级控件)。因此,经常使用的包为javax.Swing。

可以将新建的窗体看做是一个存放组件的容器。

先说下与窗体密切相关的布局管理器吧。

1、组件在窗体中的位置和大小室友布局管理器来决定的,所有的窗体都会使用一个布局管理器,通过它来自动进行组件的布局管理。

2、java共提供了五中布局管理器:

* 流式布局管理器(FlowLayout):按照组建的添加次序将按钮组件(或其他组件)从左到右放置在容器中,当到达容器的边界时,组件将放置在下一行中。

* 边界布局管理器(BorderLayout):将容器简单的划分为东西南北中五个区域,中间区域最大。

* 网络布局管理器(GridLayout):以矩形网格形式对容器的组件进行布置。容器被分成大小相等的矩形,一个矩形中放置一个组件。

* 卡片布局管理器(CardLayout):将容器中的每个组件看做一张卡片。一次只能看到一张卡片。

* 网格布局管理器(GridBagLayout):与网络布局管理器相似,但是它可以将分好的几个矩形块合并(相当于表格中的合并单元格)

现在看一下分别用JFrame和Frame新建窗体的代码(测试OK):

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class One { 
    static JFrame jframe;
    static Button button;
    
    static Frame frame;
    
    public static void jframeInit(){
    	//新建一个最初不可见的、具有指定标题的JFrame对象
    	jframe = new JFrame("JFrame Window");
    	//为窗体设置长度和宽度。括号中第一个是横向长度,第二个是纵向长度
    	jframe.setSize(500, 400);
    	//为窗体设置初始位置。括号中第一个是窗体左顶点距离电脑屏幕最左边的距离,
    	//第二个是窗体左顶点距离电脑屏幕最上边的距离。
    	jframe.setLocation(300, 200);
    	
    	/**
    	 * 与上两句所起到的效果一致
    	 * 括号中共有四个属性,前两个与setLocation的一致,后两个与setSize的一致
    	 */
//    	jframe.setBounds(300, 200, 500, 400);
    	
    	jframe.setLayout(new FlowLayout());	//设置窗体的页面布局格式
    	
    	button = new Button("button");	//创建一个新的按钮,并且按钮上有标签内容
    	jframe.add(button);		//将按钮添加到窗体上(默认居中)
    	
    	//鼠标点击窗体右上角表示的的“关闭”按钮时执行的关闭动作(若没有这句话,无法正常关闭)
    	jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	jframe.setVisible(true);	//使窗体可视化
    }
    
    public static void frameInit(){
    	frame = new Frame("Frame Window");
    	frame.setSize(500,400);
    	frame.setLocation(300, 200);
    	
//    	frame.setBounds(300,200,500,400);		//与上两句所起到的效果一致
    	
    	frame.setLayout(new FlowLayout());
    	
    	button = new Button("button");
    	frame.add(button);
    	frame.setVisible(true);
    	
    	//关闭窗体(第一种方法)
    	frame.addWindowListener(new MyWin());
    	    	
    	//关闭窗体(第二种方法——与第一种相似)
//    	frame.addWindowListener(new WindowAdapter(){
//    		public void windowClosing(WindowEvent e){
//    			System.exit(0);
//    		}
//    	});
    }
    
    public static void main(String[] args){
//    	jframeInit();
    	frameInit();
    }
}

class MyWin extends WindowAdapter{
	public void windowClosing(WindowEvent e){
		System.exit(0);
	}
}
Frame和JFrame对窗体的设置等有很多地方是相同的,比如设置窗体大小、设置窗体位置等;但是也有不同点,二者关闭窗体的使用方式不同。

JFrame关闭窗体的命令:

    	jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Frame关闭窗体的命令:

frame.addWindowListener(new WindowAdapter(){
    	public void windowClosing(WindowEvent e){
		System.exit(0);
    	}
    });
而且严格意义上说,JFrame是Frame的扩展版本,添加了对JFC/Swing组件架构的支持。具体也可以查看JFrame和Frame的帮助文档。



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值