三十三、Java图形化界面设计——布局管理器之null布局(空布局)
- 格式:docx
- 大小:34.57 KB
- 文档页数:4
三十一、Java图形化界面设计——布局管理器之GridLayout (网格布局)网格布局特点:l 使容器中的各组件呈M行×N列的网格状分布。
l 网格每列宽度相同,等于容器的宽度除以网格的列数。
l 网格每行高度相同,等于容器的高度除以网格的行数。
l 各组件的排列方式为:从上到下,从左到右。
l 组件放入容器的次序决定了它在容器中的位置。
l 容器大小改变时,组件的相对位置不变,大小会改变。
l 设置网格布局行数和列数时,行数或者列数可以有一个为零。
若rows 为0,cols为3,则列数固定为3,行数不限,每行只能放3个控件或容器。
若cols为0,rows为3,则行数固定为3,列数不限,且每行必定有控件,若组件个数不能整除行数,则除去最后一行外的所有行组件个数为:Math.ceil(组件个数/rows)。
Math.ceil(double x):传回不小于x的最小整数值。
比如行数为3,组件数为13个,则Math.ceil(13/3)=5,即第一行,第二行组件数各为5个,剩下的组件放在最后一行。
l 若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变。
实例一://GridLayoutDemo.javaimport javax.swing.*;import java.awt.*;public class GridLayoutDemo extends JFrame { public GridLayoutDemo() {setLayout(new GridLayout(0,2)); //设置为网格布局,未指定行数setFont(new Font("Helvetica", Font.PLAIN, 14));getContentPane().add(new JButton("Button 1"));getContentPane().add(new JButton("Button 2"));getContentPane().add(new JButton("Button 3"));getContentPane().add(new JButton("Button 4"));getContentPane().add(new JButton("Button 5"));}public static void main(String args[]) {GridLayoutDemo f = new GridLayoutDemo();f.setTitle("GridWindow Application");f.pack();f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setLocationRelativeTo(null); //让窗体居中显示}}程序结果如下图所示:实例二:布局一个简单的计算器思路:对窗体应用边界布局,在NORTH上放置一个文本框,在CENTER 上放置一个面板,面板上放置计算器的相应按钮//GridFrame.Javaimport java.awt.*;import javax.swing.*;class GridFrame extends JFrame{//定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3JPanel p=new JPanel(new GridLayout(4,4,3,3));JTextArea t=new JTextArea(); //定义文本框//定义字符串数组,为按钮的显示文本赋值//注意字符元素的顺序与循环添加按钮保持一致Stringstr[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};public GridFrame(String s){super(s); //为窗体名称赋值setLayout(new BorderLayout()); //定义窗体布局为边界布局JButton btn[]; //声明按钮数组btn=new JButton[str.length]; //创建按钮数组//循环定义按钮,并添加到面板中for(int i=0;i<str.length;i++){btn[i]=new JButton(str[i]);p.add(btn[i]);}//将文本框放置在窗体NORTH位置getContentPane().add(t,BorderLayout.NORTH);//将面板放置在窗体CENTER位置getContentPane().add(p,BorderLayout.CENTER);setVisible(true);setSize(250,200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null); //让窗体居中显示 }public static void main(String[] args){GridFrame gl=new GridFrame("网格布局计算机!");}}程序执行结果如下图:注意:这里一定要体会通过字符串数组和循环添加按钮的方法,以后添加菜单以及事件处理均采用这种方法,这种方法的好处在于,如果需要修改按钮顺序,直接修改字符串就可以了。
JavaGUI布局管理器容器可设置布局管理器,管理容器中组件的布局:container.setLayout(new XxxLayout());Java有6种布局管理器,AWT提供了5种:FlowLayoutBorderLayoutGridLayoutGridBagLayoutCradLayoutSwing还提供了⼀种:BoxLayout1、FlowLayout 流式布局顾名思义,组件像⽔流⼀样,从第⼀⾏开始,从左向右依次排列,碰到边界时转到下⼀⾏继续。
三个构造函数:FlowLayout() //使⽤默认参数FlowLayout(int align) //设置对齐⽅式FlowLayout(int align,int hgap,int vgap) //设置对齐⽅式、⽔平间距、垂直间距align是FlowLayout类的常量,⽐如:FlowLayout.LEFT,FlowLayout.CENTER2、BorderLayout 边界布局将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置⼀个组件。
2个构造函数:BorderLayout() //使⽤默认参数BorderLayout(int hgap,int vgap) //设置⽔平间距、垂直间距放置组件时需指定位置:container.add(Component comp, Borderlayout.SOUTH); //第⼆个参数是BorderLayout类的常量,指定组件位置container.add(Component comp); //缺省位置时,默认为BorderLayout.CENTER,放在中间⼀共5个位置,⼀个位置最多放1个组件。
当然,可以在⼀个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。
也可以⼀个都不放。
3、GridLayout ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系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(容器名称) 显示容器中当前组件之后的一个组件,若当前组件为最后添加的组件,则显示第一个组件,即卡片组件显示是循环的。
五种JAVAGUI布局管理的⽅式1. 流式布局(FlowLayout)定义:通俗地说,流式布局就是根据窗⼝⼤⼩,⾃动改变窗⼝内组件的位置。
例如:原窗⼝⼤⼩⼀⾏可以容纳10个BUTTON,但将窗⼝缩⼩后,每⾏仅能容纳5个BUTTON,此时原先的10个BUTTON中的五个就会⾃动排列到下⼀⾏。
⽰例:(省略panel的使⽤)Hashsetpackage 布局管理;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Layout { //流式布局public static void main(String[] args) {Frame frame = new Frame(); //创建⼀个窗⼝frame.setLayout(new FlowLayout(FlowLayout.LEFT)); //将窗⼝布局设置为流式布局,并设置向左对齐Button button1 = new Button("button1"); //创建若⼲个按钮Button button2 = new Button("button2");Button button3 = new Button("button3");Button button4 = new Button("button4");Button button5 = new Button("button5");frame.add(button1); //将按钮添加进窗⼝中frame.add(button2);frame.add(button3);frame.add(button4);frame.add(button5);frame.setBounds(200,200,500,500); //设置窗⼝的位置与⼤⼩frame.setVisible(true); //设置窗⼝可见性frame.addWindowListener(new WindowAdapter() { //事件监听:关闭窗⼝@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}}2. 东西南北中布局(BorderLayout)定义:东西南北中布局,顾名思义。
Java图形界⾯GUI布局⽅式(⼩结)⽬录流式布局边界布局卡⽚布局⾃定义布局流式布局采⽤流式布局会将元素按从左到右的顺序排列,如果⼀个元素在⼀⾏中放不下,那这个元素会另起⼀⾏依然按照从左到右的顺序排列⽰例:代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 创建流式布局管理器对齐⽅式为左对齐LayoutManager layout = new FlowLayout(FlowLayout.LEFT);// 关闭窗⼝结束程序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.setPreferredSize(new Dimension(100,100));button2.setPreferredSize(new Dimension(100,100));button3.setPreferredSize(new Dimension(100,100));button4.setPreferredSize(new Dimension(100,100));button5.setPreferredSize(new Dimension(100,100));// 设置按钮背景颜⾊button1.setBackground(Color.red);button2.setBackground(Color.blue);button3.setBackground(Color.pink);button4.setBackground(Color.orange);button5.setBackground(Color.yellow);// 将按钮添加到内容⾯板中contentpage.add(button1);contentpage.add(button2);contentpage.add(button3);contentpage.add(button4);contentpage.add(button5);// 设置窗⼝⼤⼩jFrame.setSize(500, 300);// 设置窗⼝可见jFrame.setVisible(true);}}边界布局采⽤边界布局会将元素分别划分到东,西,中,南,北五个⽅位,分别使⽤EAST,WEST,CENTER,SOUTH,NORTH标识,每个⽅位只能放⼀个元素⽰例代码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);}}卡⽚布局顾名思义,若⼀个容器使⽤卡⽚布局,其⾥⾯的所有组件就像是⼀副牌⼀样重叠在⼀起,容器只能显⽰⼀个组件,默认显⽰第⼀个组件,可以通过CardLayout中的show⽅法改变显⽰的组件⽰例显⽰第⼀个按钮显⽰第⼆个按钮代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 创建卡⽚布局管理器CardLayout layout = new CardLayout();// 关闭窗⼝结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建⾯板JPanel jPanel = new JPanel();// 设置⾯板布局⽅式为卡⽚布局jPanel.setLayout(layout);// 添加按钮设置背景颜⾊JButton jButton1 = new JButton();jButton1.setBackground(Color.pink);JButton jButton2 = new JButton();jButton2.setBackground(Color.yellow);// 将按钮添加到⾯板中并对按钮进⾏命名jPanel.add(jButton1,"bt1");jPanel.add(jButton2,"bt2");// 指定在⾯板上显⽰的按钮layout.show(jPanel, "bt2");// 将⾯板添加到窗⼝中jFrame.add(jPanel);// 设置窗⼝⼤⼩jFrame.setSize(500,300);// 设置窗⼝可见jFrame.setVisible(true);}}⾃定义布局所谓⾃定义布局就是不使⽤任何布局管理器,⽽是我们⾃⼰通过指定组件的X坐标,Y坐标,宽度,⾼度来指定组件的位置这⾥的坐标和我们平时的坐标有些区别,如下:组件是以左上⾓顶点为原点来定位坐标,使⽤⾃定义布局,要将容器使⽤的布局管理器设置为null那有的⼩伙伴会问了,既然布局管理器设置为null,那可不可以直接不设置啊,当然不⾏,如果不设置的话,组件会不显⽰⽰例代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 关闭窗⼝同时结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建⾯板JPanel jPanel = new JPanel();// 使⽤⾃定义布局,将容器使⽤的布局管理器设置为nulljPanel.setLayout(null);// 添加按钮设置背景颜⾊JButton jButton1 = new JButton();jButton1.setBackground(Color.pink);JButton jButton2 = new JButton();jButton2.setBackground(Color.yellow);// 设置按钮的坐标为(100,100) ,宽度为100,⾼度为100jButton1.setBounds(new Rectangle(100,100,100,100));// 设置按钮的坐标为(220,70) ,宽度为100,⾼度为100jButton2.setBounds(new Rectangle(220,70,100,100));// 将按钮添加到⾯板中jPanel.add(jButton1);jPanel.add(jButton2);// 将⾯板添加到窗⼝中jFrame.add(jPanel);// 设置窗⼝⼤⼩jFrame.setSize(500,300);// 设置窗⼝可见jFrame.setVisible(true);}}到此这篇关于Java图形界⾯GUI布局⽅式(⼩结)的⽂章就介绍到这了,更多相关Java GUI布局内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
前言随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。
而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。
现在的应用软件越来越要求界面友好、功能强大而又使用简单。
而众所周知,在Java中进行GUI设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。
这也是很多Java程序员抱怨的事情。
但GUI 已经成为程序发展的方向,所以我们也必须了解Java的GUI设计方法和特点。
其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。
本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。
2 Java中的布局管理器2.1 为什么要使用布局在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。
为了管理好这些组件的布局,我们就需要使用布局管理器。
比如说,设计一个简单的计算器,或一个文本编辑器等等。
这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。
将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。
在Java中,布局由布局管理器(LayoutManager) 来管理。
那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢?如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。
不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。
为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。
北京开放大学Beijing Open UniversityJava的布局管理器主讲教师:申雪萍职称:副教授任职单位:北京航空航天大学软件学院ObjectFontColorGraphics布局管理器MenuComponentComponentEventCheckBoxGroup布局管理器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.javaBorderLayout布局•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.javaCardLayout布局•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.javanull布局•null布局又称为空布局•对一个容器(Container)而言,可以用下面方式设置其布局管理器为nullpublic 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默认布局管理器ComponentContainer WindowFrame Dialog Panel Applet BorderLayout FlowLayoutJava 的布局管理器 北京开放大学 Beijing Open University北京开放大学Beijing Open University。
java中Swing五种常见的布局⽅式1、边界布局(BorderLayout)2、流式布局(FlowLayout)3、⽹格布局(GridLayout)4、盒⼦布局(BoxLaYout)5、空布局(null)还有其他两种布局,分别是GridBagLayout(⽹格包布局)、CardLayout(卡⽚布局)注意:JFrame和JDialog默认布局为BorderLayout,JPanel和Applet默认布局为FlowLayout边界布局⽰例代码:import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutExample extends JFrame{JButton btn1=new JButton("东");JButton btn2=new JButton("南");JButton btn3=new JButton("西");JButton btn4=new JButton("北");JButton btn5=new JButton("中");BorderLayoutExample(){init();this.setTitle("边界布局");this.setResizable(true);this.setSize(200, 200);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(new BorderLayout(10,5)); //默认为0,0;⽔平间距10,垂直间距5this.add(btn1,BorderLayout.EAST);this.add(btn2,BorderLayout.SOUTH);this.add(btn3,BorderLayout.WEST);this.add(btn4,BorderLayout.NORTH);this.add(btn5,BorderLayout.CENTER);}public static void main(String args[]){new BorderLayoutExample();}}运⾏结果:流式布局⽰例代码:import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;public class FlowLayoutExample extends JFrame{JButton btn1=new JButton("one");JButton btn2=new JButton("two");JButton btn3=new JButton("three");JButton btn4=new JButton("four");JButton btn5=new JButton("five");FlowLayoutExample(){init();this.setTitle("流式布局");this.setResizable(true);this.setSize(200, 200);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(new FlowLayout(FlowLayout.LEFT,10,5)); //默认为居中;⽔平间距10,垂直间距5 this.add(btn1);this.add(btn2);this.add(btn3);this.add(btn4);this.add(btn5);}public static void main(String args[]){new FlowLayoutExample();}}运⾏结果:⽹格布局⽰例代码:import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;public class GridLayoutExample extends JFrame{JButton btn1=new JButton("one");JButton btn2=new JButton("two");JButton btn3=new JButton("three");JButton btn4=new JButton("four");JButton btn5=new JButton("five");GridLayoutExample(){init();this.setTitle("表格布局");this.setResizable(true);this.setSize(300, 200);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(new GridLayout(2,3,10,5)); //默认为1⾏,n列;2⾏3列,⽔平间距10,垂直间距5 this.add(btn1);this.add(btn2);this.add(btn3);this.add(btn4);this.add(btn5);}public static void main(String args[]){new GridLayoutExample();}}运⾏结果:盒⼦布局⽰例代码:import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JFrame;public class BoxLaYoutExample extends JFrame{JButton btn1=new JButton("one");JButton btn2=new JButton("two");JButton btn3=new JButton("three");JButton btn4=new JButton("four");JButton btn5=new JButton("five");BoxLaYoutExample(){init();this.setTitle("表格布局");this.setResizable(true);this.setSize(300, 200);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(new BoxLayout(this.getContentPane(),BoxLayout.X_AXIS));//可以使⽤Box容器代替//Box box = new Box(BoxLayout.Y_AXIS);box.add(btn...);box.add(creat..);this.add(btn1);this.add(btn2);this.getContentPane().add(Box.createHorizontalStrut(10)); //采⽤x布局时,添加固定宽度组件隔开 //this.getContentPane().add(Box.createVerticalStrut(5)); //采⽤y布局时,添加固定⾼度组件隔开 this.add(btn3);this.add(btn4);this.add(btn5);}public static void main(String args[]){new BoxLaYoutExample();}}运⾏结果:空布局⽰例代码:import javax.swing.JButton;import javax.swing.JFrame;public class NullLayoutExample extends JFrame{JButton btn1=new JButton("one");JButton btn2=new JButton("two");JButton btn3=new JButton("three");JButton btn4=new JButton("four");JButton btn5=new JButton("five");NullLayoutExample(){init();this.setTitle("空布局");this.setResizable(true);this.setSize(300, 300);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(null);btn1.setBounds(10, 0, 100, 50); //x坐标10,y坐标0,组件宽100,⾼50 btn2.setBounds(20, 50, 100, 50);btn3.setBounds(30, 100, 100, 50);btn4.setBounds(40, 150, 100, 50);btn5.setBounds(50, 200, 100, 50);this.add(btn1);this.add(btn2);this.add(btn3);this.add(btn4);this.add(btn5);}public static void main(String args[]){new NullLayoutExample();}}运⾏结果:。
三十三、Java图形化界面设计——布局管理器之null布局(空布局)一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局。
操作方法:1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局)。
2)再调用组件的setBounds(int x, int y, int width,int height)方法设置组件在容器中的大小和位置,单位均为像素。
x为控件左边缘离窗体左边缘的距离y为控件上边缘离窗体上边缘的距离width为控件宽度height为控件高度实例:使用空布局精确定位组件的位置// NullLayoutDemo.javaimport java.awt.*;import javax.swing.*;public class NullLayoutDemo{ JFrame fr;JButton a,b; NullLayoutDemo() {fr = new JFrame();fr.setBounds(100,100,250,150);//设置窗体为空布局fr.setLayout(null);a=new JButton("按钮a");b=new JButton("按钮b");fr.getContentPane().add(a);//设置按钮a的精确位置a.setBounds(30,30,80,25);fr.getContentPane().add(b);b.setBounds(150,40,80,25);fr.setTitle("NullLayoutDemo");fr.setVisible(true);fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);fr.setLocationRelativeTo(null); //让窗体居中显示}public static void main(String args[]){new NullLayoutDemo();}}程序运行结果如下:。
/*** 图形界面* 布局管理* 流式布局* 理解设置布局方式*/package com.test1;//package com.GUI;import java.awt.*;import javax.swing.*;public class Demo8_3 extends JFrame{JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args){Demo8_3 demo8_3= new Demo8_3();}public Demo8_3(){jb1=new JButton("aaa");jb2=new JButton("bbb");jb3=new JButton("ccc");jb4=new JButton("ddd");jb5=new JButton("eee");jb6=new JButton("fff");//添加组件this.add(jb1);this.add(jb2);this.add(jb3);this.add(jb4);this.add(jb5);this.add(jb6);//设置布局管理器this.setLayout(new FlowLayout(FlowLayout.RIGHT));//设置布局方式(流式布局(流式布局.右对齐))//显示this.setTitle("流式布局案例");//标题this.setResizable(false);//设置窗口大小不变this.setLocation(300, 200); //窗体位置,左上角坐标this.setSize(250, 450); //窗口大小this.setDefaultCloseOperation(EXIT_ON_CLOSE);//关闭时退出this.setVisible(true);//显示JFrame对象窗口}}//setLayout()设置用户界面上的屏幕组件的格式布局,是java图形界面编程的常用方法。
三十三、Java图形化界面设计——布局管理器之null布局(空布局)
一般容器都有默认布局方式,但是有时候需要精确指定各个组建的大小和位置,就需要用到空布局。
操作方法:
1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局)。
2)再调用组件的setBounds(int x, int y, int width,int height)方法设置组件在容器中的大小和位置,单位均为像素。
x为控件左边缘离窗体左边缘的距离
y为控件上边缘离窗体上边缘的距离
width为控件宽度
height为控件高度
实例:使用空布局精确定位组件的位置
// NullLayoutDemo.java
import java.awt.*;
import javax.swing.*;
public class NullLayoutDemo{ JFrame fr;
JButton a,b; NullLayoutDemo() {
fr = new JFrame();
fr.setBounds(100,100,250,150);
//设置窗体为空布局
fr.setLayout(null);
a=new JButton("按钮a");
b=new JButton("按钮b");
fr.getContentPane().add(a);
//设置按钮a的精确位置
a.setBounds(30,30,80,25);
fr.getContentPane().add(b);
b.setBounds(150,40,80,25);
fr.setTitle("NullLayoutDemo");
fr.setVisible(true);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setLocationRelativeTo(null); //让窗体居中显示}
public static void main(String args[]){
new NullLayoutDemo();
}
}
程序运行结果如下:。