死磕Java系列之Java GUI 窗体和布局

窗体是底层容器,用于放各种组件,常见的容器有JFrame和JDialog两种,JPanel是中间容器,可以放在底层容器中,使用中间容器便于基本组件的管理。布局管理是将容器中的组件按照一定的规则和方式放在容器中。那么,如何定义一个容器呢?容器有大有小,有位置,有标题,这些如何设计呢?中间容器是底层容器和组件的缓冲器,那么,一个框架中可以有两个JPanel?如何在Jpanel中加入各种组件呢?界面布局有很多类型,常见的布局应该如何定义呢?如果不采用布局,各个组件的位置当如何定义?

(一)容器

容器是用来放各种组件的界面,常见的容器有窗口,对话框,和面板。在定义底层容器的时候需要考虑容器的位置,大小,是否可见,关闭时的操作等。
Frame 类就是解决这个问题的——它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。 是Java图形用户界面(GUI)工具包swing中的存放组件的容器。相当于相框。
JPanel类,是Java图形用户界面(GUI)工具包swing中的面板容器类。相当于画板。
在这里插入图片描述
(1)窗体
JavaSwing_4.1: JFrame(窗口
JFrame;窗体,窗体类似于饭店的桌子或放相片的相框,窗体用来显示给用户界面的整体视感。

import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;  
 public class TEST02 extends JFrame{     //需要继承JFrame
    public TEST02(String title)
     {
         JFrame jf = new JFrame(title);    
         Container conn = jf.getContentPane();    //得到窗口的容器
         JLabel L1 = new JLabel("Hello,world!");    //创建一个标签 并设置初始内容         
         conn.add(L1);                 //向容器中加入标签
        jf.setBounds(200,200,300,200); //设置窗口的属性 窗口位置以及窗口的大小
         jf.setVisible(true);//设置窗口可见
         jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE); //设置关闭方式 如果不设置的话 似乎关闭窗口之后不会退出程序
     }     
     public static void main(String[] args) {
	new TEST02("窗口");        //创建窗口
     }
 }

在这里插入图片描述

(2)面板
JavaSwing_4.2: JDialog(对话框)
JPanel:面板组件,非顶层容器。
一个界面只可以有一个JFrame窗体组件,但是可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout,BorderLayout,GridLayout等各种布局管理器,这样可以组合使用,达到较为复杂的布局效果。


import java.awt.*;
import javax.swing.*;
public class TEST02 extends JFrame{
	//定义组件
	JPanel jp1,jp2;//定义两个面板
	JButton jb1,jb2,jb3,jb4,jb5,jb6;//定义按钮
	public static void main(String[] args) {
		TEST02 dm=new TEST02();
	} 
	//构造函数
	public TEST02()
	{
		//创建组件
		//面板组件JPanel布局模式默认的是流式布局FlowLayout
		//实例化面板
		jp1=new JPanel(); 		
		jp2=new JPanel();
		//实例化按钮
		jb1=new JButton("西瓜");
		jb2=new JButton("苹果");
		jb3=new JButton("荔枝");
		jb4=new JButton("葡萄");
		jb5=new JButton("橘子");
		jb6=new JButton("香蕉");
		//设置布局,JPanel默认布局FlowLayout, 
		//把组件添加JPanel
		jp1.add(jb1);
		jp1.add(jb2);
		jp2.add(jb3);
		jp2.add(jb4);
		jp2.add(jb5);		
		//把JPanel加入到JFrame,采用流式布局,将按钮放在不同的位置
		this.add(jp1,BorderLayout.NORTH);
		this.add(jb6,BorderLayout.CENTER);
		this.add(jp2,BorderLayout.SOUTH);		
		//设置窗口属性
		this.setSize(300,200);
		this.setLocation(700,500);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);
		this.setVisible(true);
	}
}

  • 57
    点赞
  • 285
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值