Java的布局管理器

合集下载

JAVA基础:FlowLayout布局管理器

JAVA基础:FlowLayout布局管理器

在前⾯的例⼦中,使⽤到了FlowLayout布局管理器。

FlowLayout型布局管理器对容器中组件进⾏布局的⽅式是将组件逐个地安放在容器中的⼀⾏上。

⼀⾏放满后就另起⼀个新⾏。

FlowLayout有三种构造⽅法: public FlowLayout() public FlowLayout(int align) public F10wLayout(int align,int hgap,int vgap) 在默认情况下,FlowLayout将组件居中放置在容器的某⼀⾏上,如果不想采⽤这种居中对齐的⽅式,考试,⼤提⽰FlowLayout的构造⽅法中提供了⼀个对齐⽅式的可选项align。

使⽤该选项,可以将组件的对齐⽅式设定为左对齐或者右对齐。

align的可取值有FlowLayout.LEFT,FlowLayout.RIGHT和FlowLayout.CENTER三种形式,它们分别将组件对齐⽅式设定为左对齐、右对齐和居中,例如: new FlowLayout(FlowLayout.LEFT)这条语句创建了⼀个使⽤左对齐⽅式的FlowLayout的实例。

此外,FlowLayout的构造⽅法中还有⼀对可选项hgap和vgap,使⽤这对可选项可以设定组件的⽔平间距和垂直间距。

与其他布局管理器不同的是,FlowLayout布局管理器并不强⾏设定组件的⼤⼩,⽽是允许组件拥有它们⾃⼰所希望的尺⼨。

注意:每个组件都有⼀个getPreferredSize()⽅法,容器的布局管理器会调⽤这⼀⽅法取得每个组件希望的⼤⼩。

下⾯是⼏个使⽤setLayout()⽅法实现FlowLayout的例⼦: setLayout(new FlowLayout(FlowLayout.RIGHT,20,40)); setLayout(new FlowLayout(FlowLayout.LEFT)); setLayout(new FlowLayout());。

java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

java布局中的BoxLayout布局,使用BoxLayout进行Swing布局

java布局中的BoxLayout布局,使⽤BoxLayout进⾏Swing布局在⽤户使⽤ Java Swing 进⾏⽤户界⾯开发过程中,会碰到如何对 Java Swing 的控件进⾏布局的问题。

Swing 的控件放置在容器(Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例⼦有 Frame、Panel 等等。

容器需要定义⼀个布局管理器来对控件进⾏布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderLayout、BoxLayout、GridLayout 和 GridBaglayout, 它们的主要特点如表 1 所⽰:表 1. Swing 中的⼀些主要布局管理器的⽐较布局管理器特点FlowLayout把控件按照顺序⼀个接⼀个由左向右的⽔平放置在容器中,⼀⾏放不下,就放到下⼀⾏BorderLayout将整个容器划分成东南西北中五个⽅位来放置控件,放置控件时需要指定控件放置的⽅位BoxLayout可以指定在容器中是否对控件进⾏⽔平或者垂直放置,⽐ FlowLayout 要更为灵活GridLayout将整个容器划分成⼀定的⾏和⼀定的列,可以指定控件放在某⾏某列上GridBagLayout是 Swing 当中最灵活也是最复杂的布局管理器,可对控件在容器中的位置进⾏⽐较灵活的调整本⽂主要关注在 BoxLayout 布局管理器的使⽤上。

我们⾸先对 BoxLayout 作⼀下介绍。

BoxLayout 介绍如前所述,BoxLayout 可以把控件依次进⾏⽔平或者垂直排列布局,这是通过参数 X_AXIS、Y_AXIS 来决定的。

X_AXIS 表⽰⽔平排列,⽽ Y_AXIS 表⽰垂直排列。

BoxLayout 的构造函数有两个参数,⼀个参数定义使⽤该 BoxLayout 的容器,另⼀个参数是指定 BoxLayout 是采⽤⽔平还是垂直排列。

下⾯是⼀个创建 BoxLayout 实例的例⼦:JPanel panel=new JPanel();BoxLayout layout=new BoxLayout(panel, BoxLayout.X_AXIS);panel.setLayout(layoout);在这个例⼦中,⼀个 BoxLayout 布局管理器的实例 layout 被创建,这个实例被设置为 panel 的布局管理器,该布局管理器采⽤了⽔平排列来排列控件。

Java实验报告布局管理器对组件进行管理

Java实验报告布局管理器对组件进行管理

Java程序设计实验报告学号班级姓名指导教师实验题目实验十六、图形用户界面51、实验目的1.熟悉主要的布局方式;2.学会使用布局管理器对组件进行管理。

2、实验内容1. 按以下图示设计布局2.3.3、程序清单:(粘贴源程序代码)1.import t.Color;import java.awt.Container;import java.awt.GridLayout;import ;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextArea;public class SHILIU1 {Container con;JFrame frame;SHILIU1(){frame=new JFrame();con=frame.getContentPane();con.setLayout(new GridLayout(1,2,3,3));con.add(new JIA());con.add(new D());frame.pack();frame.setVisible(true);}public static void main(String[] args) { new SHILIU1();}add(new JButton("按钮0"),BorderLayout.NORTH);add(new JButton("按钮4"),BorderLayout.SOUTH);add(new JButton("按钮1"),BorderLayout.WEST);add(new JButton("按钮2"),BorderLayout.EAST);add(new JButton("按钮3"),BorderLayout.CENTER);}}class C extends JPanel{C(){int i;setLayout(new GridLayout(3,3,3,3));for(i=0;i<9;i++)add(new JButton("按钮"+i));}}4、运行结果:(请粘贴结果图或未通过程序粘贴错误提示)1.2.3.5、实验总结:(对运行情况作分析,以及本次实验所取得的经验。

java flowlayout用法

java flowlayout用法

java flowlayout用法Java中的FlowLayout布局管理器被广泛用于创建简单的用户界面。

FlowLayout是一种简单而灵活的布局管理器,它将组件按照给定的顺序一次排列在一行或一列上。

在这篇文章中,我们将深入探讨FlowLayout的使用和用法,并提供一些例子来帮助你更好地理解它。

第一部分:什么是FlowLayoutFlowLayout是Java的布局管理器之一,它可以帮助我们轻松地安排和管理用户界面中的组件。

它提供了一种简单的方法来按照水平或垂直方向排列组件,这取决于我们如何选择参数。

我们可以使用FlowLayout来创建任何大小和形状的界面,无论是桌面应用程序还是移动应用程序。

第二部分:FlowLayout的基本用法FlowLayout的基本用法非常简单。

我们可以通过创建一个FlowLayout的实例来启用FlowLayout管理器。

例如,下面的代码将创建一个具有默认参数的FlowLayout布局管理器:FlowLayout layout = new FlowLayout();然后,我们可以将这个布局管理器应用于窗口、面板或任何其他容器。

例如,假设我们有一个JFrame对象,我们可以通过调用其setLayout()方法将FlowLayout应用到该窗口:JFrame frame = new JFrame();frame.setLayout(layout);接下来,我们可以将组件添加到窗口中,并它们将按照FlowLayout的规定进行排列。

默认情况下,组件将从左到右依次排列,直到达到窗口的边界,然后换行继续排列。

第三部分:FlowLayout的参数FlowLayout提供了一些参数来定义组件的排列方式。

其中最常用的参数有三个:alignment、hgap和vgap。

alignment参数用于指定组件的对齐方式。

它可以具有三个值:FlowLayout.LEFT、FlowLayout.CENTER和FlowLayout.RIGHT。

谈谈Java中的布局管理器

谈谈Java中的布局管理器

55第2卷 第16期产业科技创新 2020,2(16):55~56Industrial Technology Innovation 谈谈Java 中的布局管理器潘国荣(常州刘国钧高等职业技术学校,江苏 常州 213025)摘要:布局管理器是Java 语言中编制图形用户界面程序的基础。

本文对布局管理器的概念、种类及常见用法进行了介绍。

关键词:Java ;图形用户界面;布局管理器中图分类号:TP311 文献标识码:A 文章编号:2096-6164(2020)16-0055-02在图形用户界面的程序设计中,首先要设计并编制好界面,然后才能写事件处理代码。

现在大多数支持GUI 编程的程序设计语言,如C#、.Net 都支持直接拖拉控件来编制界面,但是Java 语言暂不支持直接拖拉操作,它是通过独有的布局管理器用代码来实现界面编制的。

本文将就Java 语言中的布局管理器及使用方式作一论述。

1 布局管理器在Java 中,为了实现跨平台的特性并且获得动态的布局效果,Java 将容器内的所有组件安排给一个”布局管理器”负责管理,组件在容器中的布局,包括组件的位置和大小,通常由布局管理器负责安排。

常用的顶级容器有窗体JFrame、对话框JDialog,中间容器有面板JPanel,它们均有缺省布局管理器。

窗体JFrame 和对话框JDialog 的缺省布局管理器均为边界布局BorderLayout,面板JPanel 的缺省布局管理器为流式FlowLayout,面板JPanel 无法单独显示,必须添加到某个容器中。

2 常见布局管理器介绍2.1 流布局管理器FlowLayout对组件逐行定位,行内从左到右,一行排满后换行;默认对齐方式为居中对齐;不改变组件的大小,按组件原有尺寸显示组件,可在构造方法中设置不同的组件间距、行距及对齐方式。

见图1。

图1 流布局管理器2.2 边界布局管理器BorderLayout将整个容器布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域;如不指定组件的加入部位,则默认加入到中心区域,是JFrame 的默认布局管理器。

JAVA中GridBagLayout布局管理器应用详解

JAVA中GridBagLayout布局管理器应用详解

JAVA中GridBagLayout布局管理器应⽤详解很多情况下,我们已经不需要通过编写代码来实现⼀个应⽤程序的图形界⾯,⽽是通过强⼤的IDE⼯具通过拖拽辅以简单的事件处理代码即可很轻松的完成。

但是我们不得不⾯对这样操作存在的⼀些问题,有时候我们希望能够⾃由改变⼀个程序界⾯的⼤⼩,通过托拽⽣成的界⾯往往是不提供这个功能的,因为定制的界⾯⼀旦改变形状,组件间的布局会变得杂乱⽆章。

Java中的布局管理器应⽤了策略者模式(Strategy),为不同类型的组件布局提供了很好的模型。

⽽其中的⽹格组布局管理器(GridBagLayout)被认为是所有布局管理器中最强⼤的。

下⾯将通过⼀个例⼦讲述它的使⽤⽅法。

1.实现⼀个WindowsXP下画图板的框架,下⾯是设计模型图我们可以将GridBagLayout看作没有任何约束或限制的⽹格布局(GridLayout),⼀个组件可以占据若⼲⾏和列,⽽且⼤⼩设定也是⾃由的。

从上图我们可以清晰的看到整个画图板界⾯被划分为4⾏2列的⼀个表格,我们先不⽤管某个单元格的⼤⼩,只管划分。

这样五个具体的⾯板(我们使⽤JPanel对象进⾏填充)就构成了整个界⾯,上侧占据1⾏2列的⼯具选择⾯板(toolSelectPanel),左侧1⾏1列的某个⼯具的选项⾯板(toolConcretePanel),右侧的drawPanel,下侧的colorPanel和statePanel2.我们通过以下步骤为界⾯进⾏GridBagLayout布局1).设置主界⾯的布局管理器为GridBagLayout(不⽤指定⾏和列)2).为界⾯中的每⼀个组件(这⾥是JPanel对象)指定⼀个GridBagConstraints对象,通过设置该对象的属性值指出组件在管理器中的布局⽅案3).通过下⾯的调⽤添加组件极其约束条件(GridBagConstraints对象)add(Component,constraints);我们有必要了解⼀下GridBagConstraints中各个属性的具体含义以便我们更好的进⾏个性化的布局@gridx,gridy:组件左上⾓所在的位置,如上图中左侧的⾯板在1⾏0列,则gridy=0,gridx=1。

java笔记4(布局管理器常用组件qq聊天界面记事本)

Java笔记4(布局管理器、常用组件、qq聊天界面、记事本)文件结构Java代码布局管理器Demo8_1.java package com.test1; import javax.swing.JButton; import javax.swing.JFrame; public classDemo8_1 extends JFrame //继承JFrame { /*** @param args */ public static voidmain(String[] args) { Demo8_1 demo8_1=new Demo8_1(); } //把需要的组件定义在这里JButton jb1=null; //定义一个按钮//构造函数public Demo8_1() { ////JFrame是一个顶层容器类(可以添加其它swing组件的类) //JFrame jf=new JFrame(); //给窗体设置标题this.setTitle("Hello world"); //设置大小,按像素this.setSize(200, 200); //设置初始位置this.setLocation(100,200); //创建一个按钮jb1=new JButton("我是一个按钮!"); //添加JButton组件this.add(jb1); //设置当关闭窗口时,保证JVM也退出this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } } 常用组件常Demo8_2.java /* * BorderLayout演示*1.继承JFrame *2.定义组件*3.创建组件(构造函数) *4.添加组件*5.对窗体设置*6.显示窗体*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_2 extends JFrame{ /** * @param args */ //定义组件JButton jb1,jb2,jb3,jb4,jb5; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_2demo8_2=new Demo8_2(); } publicDemo8_2() { //创建组件jb1=new JButton("中部"); jb2=new JButton("北部"); jb3=new JButton("南部"); jb4=new JButton("东部");jb5=new JButton("西部"); //添加各个组件this.add(jb1,BorderLayout.CENTER);this.add(jb2,BorderLayout.NORTH);this.add(jb3,BorderLayout.SOUTH);this.add(jb4,BorderLayout.EAST);this.add(jb5,BorderLayout.WEST); //设置窗体属性this.setTitle("边界布局的案例");this.setSize(300,200); this.setLocation(200,200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示窗体this.setVisible(true); } }Demo8_3.java /* * 功能:流式:流式布局案例*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_3 extends JFrame{ /** * @param args */ //定义需要的组件JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args) { // TODOAuto-generated method stub Demo8_3 demo8_3=new Demo8_3(); } //构造函数public Demo8_3() { //创建组件jb1=new JButton("关羽"); jb1.setSize(100, 100); jb2=new JButton("张飞"); jb3=new JButton("赵云");jb4=new JButton("马超"); jb5=new JButton("黄忠");jb6=new JButton("魏延"); //添加组件this.add(jb1); this.add(jb2); this.add(jb3);this.add(jb4); this.add(jb5); this.add(jb6);//设置布局管理器this.setLayout(newFlowLayout(FlowLayout.LEFT)); //设置窗体属性this.setTitle("流式布局案例"); this.setSize(350,200); this.setLocation(200,200); //禁止用户改变窗体大小this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //显示this.setVisible(true); } }swing编程实战Demo8_4.java /* * 风格布局*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_4 extends JFrame{ int size=9; //定义组件JButton jbs[]=new JButton[size]; public static void main(String[] args) { // TODO Auto-generated method stub //创建实例Demo8_4demo8_4=new Demo8_4(); } //构造函数public Demo8_4() { //创建组件for(inti=0;ijava /* * 多种布局管理器的使用*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_5 extends JFrame { //定义组件JPanel jp1,jp2; JButton jb1,jb2,jb3,jb4,jb5,jb6; public static void main(String[] args) { // TODO Auto-generated method stub Demo8_5 demo8_5=new Demo8_5(); }//构造函数public Demo8_5() { //创建组件//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("香蕉"); //设置布局//添加jp1.add(jb1); jp1.add(jb2); jp2.add(jb3);jp2.add(jb4); jp2.add(jb5); //把Panel 加入JFrame this.add(jp1,BorderLayout.NORTH); this.add(jb6,BorderLayout.CENTER);this.add(jp2,BorderLayout.SOUTH);this.setSize(300,150); this.setLocation(200,200); this.setVisible(true); } } Demo8_6.java package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_6 extends JFrame{ /** * @param args */ //定义组件JPanel jp1,jp2,jp3; //三个子面板JLabeljlb1,jlb2; //标签JButton jb1,jb2; //两个按钮JTextField jtf1,jpf1; //两个文本输入框public static void main(String[] args) { // TODOAuto-generated method stub Demo8_6demo8_6=new Demo8_6(); } //构造函数public Demo8_6() { jp1=new JPanel();jp2=new JPanel(); jp3=new JPanel();jlb1=new JLabel("用户名:"); jlb2=new JLabel("密码:"); jb1=new JButton("登录"); jb2=new JButton("取消"); jtf1=new JTextField(10); //用户名文本框jpf1=new JPasswordField(10); //密码文本框//设置布局管理this.setLayout(new GridLayout(3,1));//加入各个组件jp1.add(jlb1); jp1.add(jtf1);jp2.add(jlb2); jp2.add(jpf1); jp3.add(jb1);jp3.add(jb2); //加入到JFrame this.add(jp1); this.add(jp2); this.add(jp3); this.setTitle("会员管理系统"); this.setSize(250,130);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_7.java/* * 复选框或单选框的案例*/ package com.test1; import java.awt.*; importjavax.swing.*; public class Demo8_7 extends JFrame{ //定义JPanel jp1,jp2,jp3;JLabel jl1,jl2; JButton jb1,jb2; JCheckBoxjcb1,jcb2,jcb3; JRadioButton jrb1,jrb2;ButtonGroup bg; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_7 dmeo8_7=new Demo8_7(); } //构造函数public Demo8_7() { //创建组件jp1=new JPanel(); jp2=new JPanel(); jp3=new JPanel(); jl1=new JLabel("你喜欢的运动:");jl2=new JLabel("你的性别:"); jb1=new JButton("注册用户"); jb2=new JButton("取消注册");jcb1=new JCheckBox("足球"); jcb2=newJCheckBox("篮球"); jcb3=new JCheckBox("网球");jrb1=new JRadioButton("男"); jrb2=new JRadioButton("女"); //一定要把jrb1,jrb2放入到一个ButtonGroup ButtonGroup bg=new ButtonGroup(); bg.add(jrb1); bg.add(jrb2);//设置布局管理器this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); jp1.add(jcb1);jp1.add(jcb2); jp1.add(jcb3); jp2.add(jl2);jp2.add(jrb1); jp2.add(jrb2); jp3.add(jb1);jp3.add(jb2); this.add(jp1); this.add(jp2); this.add(jp3); this.setSize(300,150);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_8.java/* * JCombobox/JList/JScrollPane */package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_8 extends JFrame { //定义JPanel jp1,jp2;JLabel jl1,jl2; JComboBox jcb1; JList jlist; JScrollPane jsp; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_8 demo8_8=new Demo8_8(); } //构造函数public Demo8_8() { jp1=new JPanel(); jp2=new JPanel(); jl1=new JLabel("你的籍贯:"); jl2=new JLabel("旅游地点:"); String []jg={"北京","上海","天津","火星"}; jcb1=new JComboBox(jg); String []dd={"九寨沟","故宫","长城","兵马俑"}; jlist=new JList(dd);jlist.setVisibleRowCount(2);//设置你希望显示多少个选项jsp=new JScrollPane(jlist); //设置布局this.setLayout(new GridLayout(3,1)); //添加组件jp1.add(jl1); //加到面板1当中jp1.add(jcb1);jp2.add(jl2); //加到面板2当中jp2.add(jsp);this.add(jp1); //把面板加入到窗体当中this.add(jp2); //设置窗体属性this.setSize(200,180);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } } Demo8_9.java /* * 词霸*/ package com.test1;import java.awt.*; import javax.swing.*;public class Demo8_9 extends JFrame{ //定义组件JSplitPane jsp; JList jList; JLabel jl1; public static void main(String[] args) { // TODOAuto-generated method stub Demo8_9demo8_9=new Demo8_9(); } publicDemo8_9() { //创建组件String []words={"迈克尔-杰克逊","中国","导游"}; jList=new JList(words); jl1=new JLabel(new ImageIcon("images/迈克尔-杰克逊2.jpg")); //拆分窗格jsp=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jl1);//设置窗格可以伸缩jsp.setOneTouchExpandable(true); //设置布局管理器//添加组件this.add(jsp);//设置大小this.setSize(550,632);this.setLocation(200,200);this.setVisible(true); } }Demo8_10.java /* * qq聊天器*/package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_10 extends JFrame{ JTextArea jta=null; JScrollPane jsp=null; //滚动面板JPanel jp1=null;JComboBox jcb=null; JTextField jtf=null; JButton jb=null; public static void main(String[] args) { // TODO Auto-generated method stubDemo8_10 demo8_10=new Demo8_10(); }//构造public Demo8_10() { jta=new JTextArea(); jsp=new JScrollPane(jta); //为文本域添加滚动条jp1=new JPanel(); String []chatter={"布什","拉登"}; jcb=new JComboBox(chatter);jtf=new JTextField(10); jb=new JButton("发送");//设置布局//添加组件jp1.add(jcb);jp1.add(jtf); jp1.add(jb); //加入JFrame this.add(jsp); this.add(jp1,BorderLayout.SOUTH);//设置窗体属性this.setSize(300,200);this.setIconImage((newImageIcon("images\\rowin2.gif")).getImage());this.setTitle("简单QQ");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } }Demo8_11.java /* * qq登录界面制作*/ package com.test1; import java.awt.*; import javax.swing.*; public class Demo8_11 extends JFrame{ //北部区域JLabel jl1; //南部区域JButton jb1,jb2,jb3; JPanel jp1;//中部区域JTabbedPane jtp;//选项卡窗格JPanel jp2,jp3,jp4;//三个子面板JLabeljl2,jl3,jl4,jl5; //号码输入文本框JTextField jtf; //密码JPasswordField jpf; //清除号码button JButton jb4; //隐身登录,记住密码JCheckBoxjcb1,jcb2; public Demo8_11() { //创建组件jl2=new JLabel("QQ号码",JLabel.CENTER);jl3=new JLabel("QQ密码",JLabel.CENTER); jl4=new JLabel("忘记密码",JLabel.CENTER);jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体样式jl4.setForeground(Color.BLUE);//设置字体颜色jl5=new JLabel("申请密码保护");jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_ CURSOR)); //输入号码框jtf=new JTextField(); //输入密码框jpf=new JPasswordField(); jb4=new JButton(newImageIcon("images\\清除号码.jpg")); //复选框jcb1=new JCheckBox("隐身登录"); jcb2=new JCheckBox("记住密码"); //北部区域jl1=new JLabel(new ImageIcon("images\\老虎.jpg"));//南部区域jp1=new JPanel(); jb1=newJButton(new ImageIcon("images\\登录.gif")); jb2=new JButton(new ImageIcon("images\\取消.gif")); jb3=new JButton(new ImageIcon("images\\向导.gif")); //中部区域jtp=new JTabbedPane(); jp2=new JPanel(); jp3=new JPanel();jp3.setBackground(Color.RED);//给面板设置背景颜色jp4=new JPanel(); jp4.setBackground(newColor(0,0,255));//用另一种方法设置背景颜色//将面板添加到选项卡窗格上jtp.add("QQ号码",jp2); //第一个参数代表选项卡的名称,第二个参数代表面板jtp.add("手机号码",jp3); jtp.add("电子邮箱",jp4);//设置布局jp2.setLayout(new GridLayout(3,3));//添加组件//南部jp1.add(jb1); jp1.add(jb2); jp1.add(jb3); //中部jp2.add(jl2);//QQ号码jp2.add(jtf);//号码框jp2.add(jb4);//清除号码按钮jp2.add(jl3);//密码jp2.add(jpf);//密码框jp2.add(jcb1);//记住密码jp2.add(jcb2);//隐身登录jp2.add(jl5);//申请密码保护this.add(jp1,BorderLayout.SOUTH);//加入南部子面板this.add(jl1,BorderLayout.NORTH);//加入北部子面板this.add(jtp,BorderLayout.CENTER);//把选项卡加入中部//展现组件ImageIcon icon=newImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());this.setSize(350,240); this.setLocation(300,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { newDemo8_11(); } } Demo8_12.java /* * 记事本界面*/ package com.test1;import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Demo8_12 extends JFrame{ JMenuBar jmb;//菜单条组件JMenu menu1,menu2,menu3,menu4,menu5;JMenuItem item2,item3,item4,item5,item6,item7;JMenu xinjian;//二级菜单JMenuItem file,project; JTextArea jta; //文本输入区域//工具条JToolBar jtb; JButton jb1,jb2,jb3,jb4,jb5,jb6;public Demo8_12() { //创建组件jtb=new JToolBar(); jb1=new JButton(newImageIcon("images\\new.jpg")); jb1.setToolTipText("新建");//设置提示信息jb2=new JButton(new ImageIcon("images\\open.jpg")); jb2.setToolTipText("打开"); jb3=new JButton(newImageIcon("images\\save.jpg")); jb4=newJButton(new ImageIcon("images\\copy.jpg"));jb5=new JButton(new ImageIcon("images\\cut.jpg"));jb6=new JButton(new ImageIcon("images\\paste.jpg")); jmb=new JMenuBar(); menu1=new JMenu("文件(F)"); menu1.setMnemonic('F');//设置助记符menu2=new JMenu("编辑(E)");menu2.setMnemonic('E'); menu3=new JMenu("格式(O)"); menu3.setMnemonic('O'); menu4=new JMenu("查看(V)"); menu4.setMnemonic('V');menu5=new JMenu("帮助(H)");menu5.setMnemonic('H'); //item1=new JMenuItem("新建"); xinjian=new JMenu("新建");file=new JMenuItem("文件"); project=new JMenuItem("工程"); item2=new JMenuItem("打开",new ImageIcon("new.gif")); item3=new JMenuItem("保存(s)"); item3.setMnemonic('s');//给菜单添加快捷方式item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.V K_S,InputEvent.ALT_MASK)); item4=new JMenuItem("另存为"); item5=new JMenuItem("页面设置"); item6=new JMenuItem("打印"); item7=new JMenuItem("退出"); jta=new JTextArea();//设置布局//添加组件//将按钮添加到工具条上jtb.add(jb1); jtb.add(jb2); jtb.add(jb3); jtb.add(jb4); jtb.add(jb5); jtb.add(jb6);//将菜单项添加到菜单上xinjian.add(file);xinjian.add(project); menu1.add(xinjian);menu2.add(item2); menu1.add(item3);menu1.add(item4); menu1.addSeparator();//添加分割线menu1.add(item5); menu1.add(item6);menu1.addSeparator(); menu1.add(item7);//将菜单添加到菜单条上jmb.add(menu1);jmb.add(menu2); jmb.add(menu3);jmb.add(menu4); jmb.add(menu5); //将菜单条添加到窗体上this.setJMenuBar(jmb);//将工具条添加到窗体上this.add(jtb,BorderLayout.NORTH); //给文本域添加滚动条JScrollPane jsp=new JScrollPane(jta); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SC ROLLBAR_AS_NEEDED); this.add(jsp); //展现this.setTitle("记事本"); ImageIcon icon=new ImageIcon("images\\rowin.gif");this.setIconImage(icon.getImage());//设置窗体图标this.setSize(500,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { Demo8_12 demo8_12=new Demo8_12(); } }。

布局管理器


©NIIT
Java/Lesson 4/Slide 19 of 34
使用布局管理器
练习
客户数据录入表
©NIIT Java/Lesson 4/Slide 20 of 34
©NIIT
Java/Lesson 4/Slide 6 of 34
使用布局管理器
流动布局(续)
getContentPane().add(p1); p1.setLayout(f1); b1=new JButton(“Button 1”); b2=new JButton(“Button 2”);
b3=new JButton(“Button 3”);
使用布局管理器
边界布局(续)
p1.setLayout(bd1); b1=new JButton(“Button 1”); b2=new JButton(“Button 2”); b3=new JButton(“Button 3”);
b4=new JButton(“Button 4”);
b5=new JButton(“Button 5”);outh”,b2);
使用布局
布局管理器:
当一个容器需要选择一种布局时,首先应创建该布局对 应的布局类的对象,并以此对象设置为容器的布局:
FlowLayout flo=new FlowLayout( ); setLayout(flo);
布局管理器类是从Object 类扩展过来的
布局管理器类都在java.awt 包中提供 在GUI界面的设置中要先对容器进行布局管理器的设置 ,然后再将组件添加到容器之中,如果没有指定布局管 理器,针对面板的默认布局管理器是FlowLayout,针 对框架和Applet小程序的是BorderLayout。

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

Java的swing.GroupLayout布局管理器的使⽤⽅法和实例(转) The following builds a panel consisting of two labels in one column, followed by two textfields in the next column:JComponent panel = ...;GroupLayout layout = new GroupLayout(panel);panel.setLayout(layout);// Turn on automatically adding gaps between componentslayout.setAutoCreateGaps(true);// Turn on automatically creating gaps between components that touch// the edge of the container and the container.layout.setAutoCreateContainerGaps(true);// Create a sequential group for the horizontal axis.GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();// The sequential group in turn contains two parallel groups.// One parallel group contains the labels, the other the text fields.// Putting the labels in a parallel group along the horizontal axis// positions them at the same x location.//// Variable indentation is used to reinforce the level of grouping.hGroup.addGroup(layout.createParallelGroup().addComponent(label1).addComponent(label2));hGroup.addGroup(layout.createParallelGroup().addComponent(tf1).addComponent(tf2));layout.setHorizontalGroup(hGroup);// Create a sequential group for the vertical axis.GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();// The sequential group contains two parallel groups that align// the contents along the baseline. The first parallel group contains// the first label and text field, and the second parallel group contains// the second label and text field. By using a sequential group// the labels and text fields are positioned vertically after one another.vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).addComponent(label1).addComponent(tf1));vGroup.addGroup(layout.createParallelGroup(Alignment.BASELINE).addComponent(label2).addComponent(tf2));layout.setVerticalGroup(vGroup);GroupLayout是⼀个LayoutManager,它将组件按层次分组,以决定它们在Container中的位置。

Java图形化界面设计——布局管理器之CardLayout(卡片布局)

Java图形化界面设计——布局管理器之CardLayout(卡片布
局)
本文由我司收集整编,推荐下载,如有疑问,请与我司联系Java 图形化界面设计——布局管理器之CardLayout(卡片布局)2017/02/17 0 卡片布局能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像一叠牌,组件叠在一起,初始时显示该空间中第一个添加的组件,通过CardLayout 类提供的方法可以切换该空间中显示的组件。

1、CardLayout 类的常用构造函数及方法
2、使用CardLayout 类提供的方法可以切换显示该空间中的组件
方法一步骤:
(1)定义使用卡片布局的容器
例如:Panel cardPanel=new Panel();
(2)定义卡片对象:CardLayout 布局对象名称=new CardLayout();
例如:CardLayout card=new CardLayout();
(3)设置使用卡片布局的容器为卡片布局:
格式:容器名称.setLayout(布局对象名称);
例如:cardPanel.setLayout(card);
(4)设置容器中显示的组件
例如:for (int i = 0; i i++) {
cardPanel.add(newJButton(“按钮”+i));
}
(5)定义响应事件代码,让容器显示相应的组件
格式:
n 布局对象名称.next(容器名称) 显示容器中当前组件之后的一个组件,若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京开放大学
Beijing Open University
Java的布局管理器主讲教师:申雪萍
职称:副教授
任职单位:北京航空航天大学软件学院
Object
Font
Color
Graphics
布局管理器
MenuComponent
Component
Event
CheckBoxGroup
布局管理器
Java里有六种布局管理器–FlowLayout(顺序布局)
–BorderLayout(边界布局)
–GridLayout(网格布局)
–BoxLayout
–CardLayout(卡片布局)
–GridBagLayout(网格包布局)
–null布局
FlowLayout布局
•每个部件从左到右、从上到下,依据容器的大小逐行在容器中顺序摆放•FlowLayout是Applet类和Panel类、JPanel类的默认布局方式
FlowLayout布局
•FlowLayout中的主要方法
–构造函数
FlowLayout();
FlowLayout(int align);
FlowLayout(int align, int hgap, int vgap);
–设置布局
setLayout(new FlowLayout());

FlowLayout 中的主要方法 –构造函数
FlowLayout(); FlowLayout(int align);
FlowLayout(int align, int hgap, int vgap);
–设置布局
setLayout(new FlowLayout());
FlowLayout 布局
对齐方式
FlowLayout.RIGHT FlowLayout.LEFT FlowLayout.CENTER
表示组件
之间间隔
示例:FlowLayoutDemo.java
BorderLayout布局•BorderLayout布局方式是将组件按东、
南、西、北、中五种方位放置在容器中•如果东南西北某个位置上没有放置组件,则该区域会被中间区域和相关的某个位
置区域自动充满
•BorderLayout是Frame、JFrame和Dialog、JApplet的默认布局方式

构造函数
1.BorderLayout();
2.BorderLayout(int hgap, int vgap);
•设置布局
setLayout(new BorderLayout());

添加组件到指定布局
addLayoutComponent(Component comp,Object constraints);
BorderLayout 布局
BorederLayout.EAST BorederLayout.SOUTH BorederLayout.WEST BorederLayout.NORTH BorederLayout.CENTER
示例:BorderLayoutDemo.java
•GridLayout 布局 •GridLayout 的构造函数 •
设置布局
GridLayout 布局
GridLayout(int rows, int cols);
GridLayout(int rows, int cols, int hgap, int vgap); setLayout(new GridLayout(3,3,5,5));
将每个组件放置在rows 行及columns 列中,即将容器分成大小相等的矩形域,当一排满了,就从下一行开始
示例:GridLayoutDemo.java
CardLayout布局
•CardLayout布局管理是把容器的所有组件当成一叠卡片,卡片布局方式中
只有其中的一个组件,即一张卡片被
显示出来,其余组件是不可见的•构造函数
–CardLayout(int hgap, int vgap);
–CardLayout();
CardLayout布局
•常用方法
–addLayoutComponent(Component comp,Object constraints);
–first(Container parent);
–last(Container parent);
–next(Container parent);
–show(Container parent, String name);
示例:CardDeck.java
null布局
•null布局又称为空布局
•对一个容器(Container)而言,可以用下面方式设置其布局管理器为null
public void setLayout(null);
•这样,容器内的组件(Component)可以利用下面的方法来设置其大小和位置
public void setBounds(int x, int y,int width,int height);
x,y表示组件左上角在容器中的坐标,width
和height表示组件的宽和高
容器的嵌套
•容器的嵌套:在实际的编程中,我们经常遇到向容器中添加容器,这就是
容器的嵌套
•JPanel类型的容器常常扮演这种角色,在多种布局方式之间起到了一种桥梁
的作用
面板容器
•JPanel 组件是一个中间容器
•用于将小型的轻量级组件组合在一起•JPanel 的缺省布局为 FlowLayout
框架 下拉式菜单
面板
面板
用户界面 组件(UI) 面板 用户界面 组件(UI)
面板 用户界面 组件(UI)
面板
面板 UI 面板 UI 面板 UI
默认布局管理器
Component
Container Window
Frame Dialog Panel Applet BorderLayout FlowLayout
Java 的布局管理器 北京开放大学 Beijing Open University
北京开放大学Beijing Open University。

相关文档
最新文档