Java学习——用户界面的布局
使用布局管理器
FlowLayout管理器
面板的默认布局管理器是java.awt包中的FlowLayout类。使用FlowLayout时,像在页面中排列英文单词那样排组件:从左到右排列,当前行没有空间后进入下一行。
- import java.awt.*;
- import javax.swing.*;
- public class Crisis extends JFrame {
- JButton panicButton;
- JButton dontPanicButton;
- JButton blameButton;
- JButton mediaButton;
- JButton saveButton;
- public Crisis() {
- super("Crisis");
- setLookAndFeel();
- setSize(348, 128);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 1.默认布局
- FlowLayout flo = new FlowLayout();
- setLayout(flo);
- panicButton = new JButton("Panic");
- dontPanicButton = new JButton("Don't Panic");
- blameButton = new JButton("Blame Others");
- mediaButton = new JButton("Notify the Media");
- saveButton = new JButton("save yourself");
- add(panicButton);
- add(dontPanicButton);
- add(blameButton);
- add(mediaButton);
- add(saveButton);
- setVisible(true);
- }
- private void setLookAndFeel() {
- try {
- UIManager.setLookAndFeel(
- "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Exception exc) {
- // ignore error
- }
- }
- public static void main(String[] arguments) {
- Crisis frame = new Crisis();
- }
- }
GridLayout管理器
GridLayout类位于java.awt包中,它将容器中所有的组件组织为指定的行数和列数。分配给每个组件的显示区域都相同。
当组件加入到容器中时,GridLayout将所有的组件放置到网格中的某个位置,而且组件是从左到右依次添加,当这一行满了之后,在从下一行的最左边开始添加。
- import java.awt.*;
- import javax.swing.*;
- public class Crisis extends JFrame {
- JButton panicButton;
- JButton dontPanicButton;
- JButton blameButton;
- JButton mediaButton;
- JButton saveButton;
- public Crisis() {
- super("Crisis");
- setLookAndFeel();
- setSize(348, 128);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- // 2.GridLayout布局
- GridLayout grid = new GridLayout(2, 3);
- setLayout(grid);
- panicButton = new JButton("Panic");
- dontPanicButton = new JButton("Don't Panic");
- blameButton = new JButton("Blame Others");
- mediaButton = new JButton("Notify the Media");
- saveButton = new JButton("save yourself");
- add(panicButton);
- add(dontPanicButton);
- add(blameButton);
- add(mediaButton);
- add(saveButton);
- setVisible(true);
- }
- private void setLookAndFeel() {
- try {
- UIManager.setLookAndFeel(
- "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Exception exc) {
- // ignore error
- }
- }
- public static void main(String[] arguments) {
- Crisis frame = new Crisis();
- }
- }
BorderLay管理器
BorderLayout类也位于java.awt包中,它将容器中的组件放置在特定的位置,该位置有5个方位:东、西、南、北、中。
BorderLayout管理器将组件放置到5个位置:其中4个位置由罗盘方向指定,另外一个由中心区域指定。当在该布局下添加组件时,add()方法会包含第2个参数,用于指示组件应该放置的位置。该参数应该是BorderLayout类的5个类变量之一:NORTH、SOUTH、EAST、WEST和CENTER。
与GridLayout类相同,BorderLayout也会将所有可用空间都分配给组件。在周围放置4个边界组件后,余下的空间都分配给中央的组件,因此它通常是最大的。
- import java.awt.*;
- import javax.swing.*;
- public class Crisis extends JFrame {
- JButton panicButton;
- JButton dontPanicButton;
- JButton blameButton;
- JButton mediaButton;
- JButton saveButton;
- public Crisis() {
- super("Crisis");
- setLookAndFeel();
- setSize(348, 128);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- BorderLayout crisisLayout = new BorderLayout();
- setLayout(crisisLayout);
- panicButton = new JButton("Panic");
- dontPanicButton = new JButton("Don't Panic");
- blameButton = new JButton("Blame Others");
- mediaButton = new JButton("Notify the Media");
- saveButton = new JButton("save yourself");
- add(panicButton, BorderLayout.NORTH);
- add(dontPanicButton, BorderLayout.SOUTH);
- add(blameButton, BorderLayout.EAST);
- add(mediaButton, BorderLayout.WEST);
- add(saveButton, BorderLayout.CENTER);
- setVisible(true);
- }
- private void setLookAndFeel() {
- try {
- UIManager.setLookAndFeel(
- "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Exception exc) {
- // ignore error
- }
- }
- public static void main(String[] arguments) {
- Crisis frame = new Crisis();
- }
- }
BoxLayout管理器
BoxLayout类位于javax.swing包中,它可以将组件排列成一行或一列。
使用该布局时,先创建一个放置组件的面板,然后再创建一个布局管理器,它带有2个参数:
1.以框式布局组织的组件;
2.BoxLayout.Y_AXIS指定垂直排列,BoxLayout.X_AXIS指定水平排列;
- import java.awt.*;
- import javax.swing.*;
- public class Crisis extends JFrame {
- JButton panicButton;
- JButton dontPanicButton;
- JButton blameButton;
- JButton mediaButton;
- JButton saveButton;
- public Crisis() {
- super("Crisis");
- setLookAndFeel();
- setSize(348, 128);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- JPanel pane = new JPanel();
- BoxLayout box = new BoxLayout(pane, BoxLayout.Y_AXIS);
- pane.setLayout(box);
- panicButton = new JButton("Panic");
- dontPanicButton = new JButton("Don't Panic");
- blameButton = new JButton("Blame Others");
- mediaButton = new JButton("Notify the Media");
- saveButton = new JButton("save yourself");
- pane.add(panicButton);
- pane.add(dontPanicButton);
- pane.add(blameButton);
- pane.add(mediaButton);
- pane.add(saveButton);
- add(pane);
- setVisible(true);
- }
- private void setLookAndFeel() {
- try {
- UIManager.setLookAndFeel(
- "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Exception exc) {
- // ignore error
- }
- }
- public static void main(String[] arguments) {
- Crisis frame = new Crisis();
- }
- }
使用Insets将组件隔开
Insets类位于java.awt包中,它有一个接受4个参数的构造函数:在容器上、下、左、右留出的空间。每个参数都以像素为单位,像素是定义框架大小时使用的度量单位。
- public Insets getInsets() {
- Insets squeeze = new Insets(60, 15, 10, 15);
- return squeeze;
- }
布局测试
- import java.awt.*;
- import javax.swing.*;
- public class LottoMadness extends JFrame {
- // set up row1
- JPanel row1 = new JPanel();
- ButtonGroup option = new ButtonGroup();
- JCheckBox quickpick = new JCheckBox("Quick Pick", false);
- JCheckBox personal = new JCheckBox("Personal", true);
- // set up row2
- JPanel row2 = new JPanel();
- JLabel numbersLabel = new JLabel("Your picks: ", JLabel.RIGHT);
- JTextField[] numbers = new JTextField[6];
- JLabel winnersLabel = new JLabel("Winners: ", JLabel.RIGHT);
- JTextField[] winners = new JTextField[6];
- // set up row3
- JPanel row3 = new JPanel();
- JButton stop = new JButton("Stop");
- JButton play = new JButton("play");
- JButton reset = new JButton("Reset");
- // set up row4
- JPanel row4 = new JPanel();
- JLabel got3Label = new JLabel("3 of 6: ", JLabel.RIGHT);
- JTextField got3 = new JTextField("0");
- JLabel got4Label = new JLabel("4 of 6: ", JLabel.RIGHT);
- JTextField got4 = new JTextField("0");
- JLabel got5Label = new JLabel("5 of 6: ", JLabel.RIGHT);
- JTextField got5 = new JTextField("0");
- JLabel got6Label = new JLabel("6 of 6: ", JLabel.RIGHT);
- JTextField got6 = new JTextField("0");
- JLabel drawingsLabel = new JLabel("Drawings", JLabel.RIGHT);
- JTextField drawings = new JTextField("0");
- JLabel yearsLabel = new JLabel("Years: ", JLabel.RIGHT);
- JTextField years = new JTextField();
- public LottoMadness() {
- super("Lotto Madness");
- setSize(550, 400);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- GridLayout layout = new GridLayout(5, 1, 10, 10);
- setLayout(layout);
- FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
- option.add(quickpick);
- option.add(personal);
- row1.setLayout(layout1);
- row1.add(quickpick);
- row1.add(personal);
- add(row1);
- GridLayout layout2 = new GridLayout(2, 7, 10, 10);
- row2.setLayout(layout2);
- row2.add(numbersLabel);
- for (int i = 0; i < 6; i++) {
- numbers[i] = new JTextField();
- row2.add(numbers[i]);
- }
- row2.add(winnersLabel);
- for (int i = 0; i < 6; i++) {
- winners[i] = new JTextField();
- winners[i].setEditable(false);
- row2.add(winners[i]);
- }
- add(row2);
- FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER, 10, 10);
- row3.setLayout(layout3);
- stop.setEnabled(false);
- row3.add(stop);
- row3.add(play);
- row3.add(reset);
- add(row3);
- GridLayout layout4 = new GridLayout(2, 3, 20, 10);
- row4.setLayout(layout4);
- row4.add(got3Label);
- got3.setEditable(false);
- row4.add(got3);
- row4.add(got4Label);
- got4.setEditable(false);
- row4.add(got4);
- row4.add(got5Label);
- got5.setEditable(false);
- row4.add(got5);
- row4.add(got6Label);
- got6.setEditable(false);
- row4.add(got6);
- row4.add(drawingsLabel);
- drawings.setEditable(false);
- row4.add(drawings);
- row4.add(yearsLabel);
- years.setEditable(false);
- row4.add(years);
- add(row4);
- setVisible(true);
- }
- private static void setLookAndFeel() {
- try {
- UIManager.setLookAndFeel(
- "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
- } catch (Exception exc) {
- // ignore error
- }
- }
- public static void main(String[] arguments) {
- LottoMadness.setLookAndFeel();
- LottoMadness frame = new LottoMadness();
- }
- }
Java学习——用户界面的布局的更多相关文章
- java代码用户界面网格布局GridLayout.划分为格子区域
总结:网格布局.很简单,首先要new一个 this.setlayout(new GriedLayout(3,5));里面是行数和列数 package clientFrame; //网格布局练习 i ...
- java图形用户界面BorderLayout布局。冲突
总结:在使用边界布局发现,把所有的按钮组件都放入了panel.但是在中部的按钮组件找不到了.发现自己重复用了组件 1.this.add(bt4,BorderLayout.North); 2.panel ...
- java图形用户界面边界布局管理器
总结:不同方向的组件,所用的板是不同的: package com.moc; //用布局写一个界面 ///运用边界布局 //2个按钮在北,2个按钮在南 //中央一个大按钮 //将同一方向的组件封装后布局 ...
- Java学习知识体系大纲梳理
感悟 很奇怪,我怎么会想着写这么一篇博客——Java语言的学习体系,这不是大学就已经学过的课程嘛.博主系计算机科班毕业,大学的时候没少捧着Java教程来学习,不管是为了学习编程还是为了期末考个高分,都 ...
- Java学习笔记--Swing用户界面组件
很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel lab ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周
java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十四周
java学习第十四周 本周,主要精力放在了第十二章swing用户界面组件知识的学习,swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨 ...
- 第十二周Java学习总结
学习总结: 本周主要学习了其他容器和事件处理 1.窗体事件(WindowListener)常用接口方法voidwindowActivated/windowDeactivated(WindowEvent ...
随机推荐
- java系列-JDBC的封装
参考:http://blog.csdn.net/liuhenghui5201/article/details/16369773 一. 1.加载驱动-->>封装 --->> ...
- 批量转换引擎为innodb
[root@HE1 ~]# catconvert_Storage_Engine.sh #/bin/bash #FileName:Convert_Storage_Engine.sh #Desc:Conv ...
- Usermod:user oracle is currently logged in 家目录不能改变解决方法
[root@HE1 ~]# usermod -u 200 -g oinstall -G dba,asmdba,oper oracle[root@HE1 ~]# id oracleuid=200(ora ...
- redhat6.4下安装Oracle11g
一.在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 * soft nproc 2047 ...
- 如何估算网站日承受最大访问PV
每个老板或客户都会问架构师这个问题. 你设计的网站能承受多大的日访问量. 程序员都会拍胸脯说出一个心理最大数字.说的时候很有信心.其实这个数字大多是猜的.作为一个理性的程序员怎么能用猜呢? 这里就介绍 ...
- 如何使excel表格的内容自动添加前缀
一.假设是要在一列的单元格内容前加上固定的内容,则 方法一在原单元格实现,分两种情况 如果原单元格的内容是数字内容,要在原数字前添加"ABC"这样的前缀则选中这些单元格----右键 ...
- ABP入门系列(7)——分页实现
ABP入门系列目录--学习Abp框架之实操演练 完成了任务清单的增删改查,咱们来讲一讲必不可少的的分页功能. 首先很庆幸ABP已经帮我们封装了分页实现,实在是贴心啊. 来来来,这一节咱们就来捋一捋如何 ...
- 使用Typescript来写javascript
使用Typescript来写javascript 前几天尝试使用haxejs来写javascript,以获得静态类型带来的益处.虽然成功了,但很快发现将它与angularjs一起使用,有一些不太顺畅的 ...
- Professional C# 6 and .NET Core 1.0 - What’s New in C# 6
本文为转载,学习研究 What's New in C# 6 With C# 6 a new C# compiler is available. It's not only that a source ...
- [CSS3] 学习笔记--CSS盒子模型
1.CSS盒子模型概述 盒子模型的内容范围包括:margin(外边距).border(边框).padding(内边距).content(内容)部分组成. 2.内边距 内边距在content外,bord ...