【Swing 2】布局管理器上

很苦逼的是,每次想记录一个小程序,发现,要给别人讲清楚,总是得分很多模块讲解。

所以今天来讲下Swing组件的三大布局管理器。

参考:《Head First Java》第十三章

1. BorderLayout——边界布局

2. FlowLayout——顺序布局

3. BoxLayout——不知道叫啥

1. BorderLayout(边界布局)

该管理器把背景分成东南西北中五大块,这是框架默认的布局管理器

 1 package demo;
 2
 3 import javax.swing.*;
 4 import java.awt.*;
 5
 6 public class Test {
 7     public static void main(String[] args) {
 8         new Test();    // 用new方法创建Test对象, 执行构造函数
 9    }
10     Test() {           // 构造函数——类名(){}, 在类实例化时(使用new)被调用
11         JFrame frame = new JFrame();
12         // 关闭窗口时结束程序, 不然每次运行, 每个产生的javaw.exe进程, 都会占用内存
13         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14
15         frame.getContentPane().add(BorderLayout.NORTH, new JButton("北风之神"));
16         frame.getContentPane().add(BorderLayout.WEST, new JButton("西风烈烈"));
17         frame.getContentPane().add(BorderLayout.EAST, new JButton("东方不败"));
18         frame.getContentPane().add(BorderLayout.SOUTH, new JButton("南国红豆"));
19
20         frame.setSize(400, 300);                // 设置长为400像素, 宽为300像素
21         frame.setVisible(true);                 // 窗口设置为可见
22    }
23 }

2. FlowLayout(顺序布局)

每个组件都会按照理想的大小呈现,并且会从左到右依照加入的顺序排列。当组件放不下时会被放到下一行

FlowLayout是面板的默认的布局管理器

 1 package demo;
 2
 3 import java.awt.*;
 4 import javax.swing.*;
 5
 6 public class Test {
 7
 8     public static void main(String[] args) {
 9         new Test();
10     }
11
12     Test() {
13         JFrame frame = new JFrame();
14         JPanel panel = new JPanel();
15
16         panel.add(new JButton("一号"));
17         panel.add(new JButton("二号"));
18         panel.setBackground(Color.darkGray);         // 把面板的颜色设置为深灰色
19          // 关闭窗口时结束程序, 不然每次运行, 每个产生的javaw.exe进程, 都会占用内存
20         frame.getContentPane().add(BorderLayout.EAST, panel);// 把JPanel及其组件添加到JFrame中
21
22         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23         frame.setSize(400, 300);
24         frame.setVisible(true);
25     }
26 }

    由于框架的东西南北中五大区域中每的个区域只能加一个组件,所以可以通过加面板,然后在面板上再加组件

当我们把面板加到框架时,面板的大小与位置还是受BorderLayout布局的管理。但面板内部的组件

(通过panel.add(someComponent)加入)是由面板的FlowLayout布局来管理的。

3. BoxLayout

不像FlowLayout布局,就算水平宽度足以容纳组件,它还是会用新的行来排列组件。

package demo;

import javax.swing.*;
import java.awt.*;

public class Test {
    public static void main(String[] args) {
        new Test();
    }
    Test() {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();

        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        panel.add(new JButton("一号"));
        panel.add(new JButton("二号"));
        panel.setBackground(Color.darkGray);                      // 把面板的颜色设置为深灰色

        frame.getContentPane().add(BorderLayout.EAST, panel); // 把JPanel及其组件添加到JFrame中
        // 关闭窗口时结束程序, 不然每次运行, 每个产生的javaw.exe进程, 都会占用内存
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }

}

时间: 2024-10-27 17:16:08

【Swing 2】布局管理器上的相关文章

(转)Java 的swing.GroupLayout布局管理器的使用方法和实例

摘自http://www.cnblogs.com/lionden/archive/2012/12/11/grouplayout.html (转)Java 的swing.GroupLayout布局管理器的使用方法和实例 GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在 Container 中的位置.GroupLayout 主要供生成器使用,但也可以手工编码.分组由 Group 类的实例来完成.GroupLayout 支持两种组.串行组 (sequenti

Java 的swing.GroupLayout布局管理器的使用方法和实例(转)

GroupLayout 是一个 LayoutManager,它将组件按层次分组,以决定它们在 Container 中的位置.GroupLayout 主要供生成器使用,但也可以手工编码.分组由 Group 类的实例来完成.GroupLayout 支持两种组.串行组 (sequential group) 按顺序一个接一个地放置其子元素.并行组 (parallel group) 能够以四种方式对齐其子元素. 每个组可以包含任意数量的元素,其中元素有 Group.Component 或间隙 (gap).

android v7兼容包RecyclerView的使用(三)——布局管理器的使用

前两篇文章 android v7兼容包RecyclerView的使用(二) android v7兼容包RecyclerView的使用(一) 介绍了RecyclerView的基本用法以及与它相关的重要的几个类,本篇文章介绍布局管理器的具体用法. 为了演示布局管理器的使用,找了很多个例子,都没有找到感觉合适的例子,后来google了一把,发现了一个比较适合说明问题的例子.所以就拿该例子来解释吧. 在演示布局管理器前,我们先把UI部分搭建完成.由于使用到了V7兼容包的另一个包CardView,所以在这

swing布局管理器简介

转载:http://stevencjh.blog.163.com/blog/static/1218614612010101775336729/ swing布局管理器简介 一 .BorderLayout布局管理器:BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为东.西.南.北.中无个区域,没加入一个组件都应该指明把这个组件加在哪个区域中. BorderLayout是顶层容器( JFrame, JDialog, 和 JApplet )的默认布局管理器.有五个位置组件

Java Swing 之流式布局管理器

/** * java 之流式布局 * @author gao */ package com.gao; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; @SuppressWarnings("serial") public class Flow

【Java Swing探索之路系列】之三:Java Swing布局管理器组件

作者:郭嘉 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 一 BorderLayout BorderLayout是一种简单的布局策略,可以将其看作一个组件.它把容器分为东.南.西.北.中5个区域,每个组件将占据某个区域.而 这5个区域分别被命名为NORTH, WEST, EAST, CENTER, SOUTH,它们都被定义为静态 常量.静态常量可以直接引用,如

Java Swing布局管理器GridBagLayout的使用示例 [转]

GridBagLayout是java里面最重要的布局管理器之一,可以做出很复杂的布局,可以说GridBagLayout是必须要学好的的, GridBagLayout 类是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直.水平或沿它们的基线对齐. 每个 GridBagLayout 对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域. 下面就通过一个记事本案例去说明GridBagLayout的使用方法. 分析: 带有箭头的说明可以拉伸的. 4占用4个格

Swing布局管理器

package cn.Douzi.Graphics; import java.awt.*; import javax.swing.*; /** * BorderLayout 演示 * 1. 继承JFrame * 2. 定义你需要的各个组件 * 3. 创建组件(构造函数) * @author Douzi * */ public class Demo_layout extends JFrame { //定义组件 JButton jb1, jb2, jb3, jb4, jb5; public stat

Java Swing界面编程(8)---FlowLayout布局管理器

package com.beyole.util; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class test6 { public static void main(String[] args) { JFrame frame = new JFrame("FlowLayout"); frame.setLayout(new FlowLayout(Flo