day27

流式布局

在java中,组件放置在窗体上的方式可能与你使用过的任何GUI系统都不相同。首先,它完全基于代码;没有用来控制组件布置的“资源”。第二,组件放置在窗体上的方式不是通过绝对坐标控制,而是由“布局管理器”根据组件加入的顺序决定其位置。使用不同的布局管理器,组件的大小、形状和位置将大不相同。此外,布局管理器还可以适应applet或应用程序窗口的大小,所以如果窗口的尺寸改变了,组件的大小、形状和位置也能够做相应的改变。

JApplet、JFrame、JDialog、JPanel等都可以包含和显示组件。Container中有一个称为setLayout()的方法,可以通过这个方法来选择不同的布局管理器。在本节中,我们将通过在窗体上放置一些按钮来研究不同的布局管理器(这样最简单)。这些示例不会捕获任何按钮事件,因为它们仅仅是为了演示按钮是如何布局的。

一、BorderLayout
除非你设置为其他的布局模式,否则JFrame将使用BorderLayout作为默认的布局模式。如果不加入其他指令,它将接受你调用add()方法而加入的组件,把它放置在中央,然后把组件向各个方向拉伸,直到与边框对齐。

BorderLayout具有四个边框区域和一个中央区域的概念。当向由BorderLayout管理的面板加入组件的时候,可以使用重载的add()方法,它的第一个参数接受一个常量值。这个值可以为一下任何一个:
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class TestFlowLayout {
    public static void main(String[] args) {
        JFrame jf = new JFrame("流布局DEMO"); //建立一个窗口
        FlowLayout fl = new FlowLayout();  //使用流布局
        jf.setLayout(fl);//修改布局管理
        JButton jb1 = new JButton("按钮1"); //创建一个按钮
        jf.add(jb1); //把按钮jb1放入窗口
        JButton jb2 = new JButton("按钮2");//创建一个按钮
        jf.add(jb2);//把按钮jb2放入窗口
        jf.setSize(600, 300); //设置窗口的大小
        jf.setLocation(300,200);//设置窗口的初始位置
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口
        jf.setVisible(true); //显示窗口
    }
}
public class Test {
	public static void main(String[] args) {
//		创建窗口
		JFrame jFrame = new JFrame();
//		设置窗口名称
		jFrame.setTitle("hello");
//		创建边界布局管理器
		BorderLayout layout = new BorderLayout();
//		关闭窗口结束程序
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//		创建内容面板
		Container contentpage = jFrame.getContentPane();
//		设置内容面板布局方式为流布局
		contentpage.setLayout(layout);
//		创建按钮
		JButton button1 = new JButton("1");
		JButton button2 = new JButton("2");
		JButton button3 = new JButton("3");
		JButton button4 = new JButton("4");
		JButton button5 = new JButton("5");
//		设置按钮背景颜色
		button1.setBackground(Color.red);
		button2.setBackground(Color.blue);
		button3.setBackground(Color.pink);
		button4.setBackground(Color.orange);
		button5.setBackground(Color.yellow);
//		将按钮添加到内容面板中
//		将按钮放置到北部
		contentpage.add(button1,BorderLayout.NORTH);
//		将按钮放置到南部
		contentpage.add(button2,BorderLayout.SOUTH);
//		将按钮放置到西部
		contentpage.add(button3,BorderLayout.WEST);
//		将按钮放置到东部
		contentpage.add(button4,BorderLayout.EAST);
//		将按钮放置到中心
		contentpage.add(button5,BorderLayout.CENTER);
//		设置窗口大小
		jFrame.setSize(500, 300);
//		设置窗口可见
		jFrame.setVisible(true);
	}
}

在这里插入图片描述

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyCompute {
    public static void main(String[] args) {
        JFrame jf = new JFrame("计算器"); //创建一个窗口
        JTextField jtf = new JTextField("0",20); //初始的文本为0,长度是20
        jf.add(jtf,BorderLayout.NORTH); 
        String[] lab = {"CE","C","+/-","BackS","7","8","9","+","4","5","6",
            "-","1","2","3","*","0",".","=","/"}; //按键上的文本
        JPanel jp = new JPanel(); //创建面板
        GridLayout gl = new GridLayout(5,4); //创建网格布局
        jp.setLayout(gl); //将面板的布局方式改为网格布局
        for(int i=0;i<lab.length;i++){
            JButton jb = new JButton(lab[i]); //创建按钮
            jp.add(jb);//将创建出来的按钮都放入面板
        }
        jf.add(jp);//将面板放入窗口
        jf.pack(); //自动调节大小
        jf.setResizable(false);//不能改变窗口的大小
        jf.setLocation(300,200); // 设置初始的位置
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭
        jf.setVisible(true); //解决了初始不可见的问题
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值