java常用布局管理器
- 格式:pptx
- 大小:137.71 KB
- 文档页数:12
第9章 布局管理器在第5章中,介绍了多种常用AWT 组件的使用,AWT 组件可用于用户图形界面的创建,但由于界面中不能使用绝对坐标,因此组件无法直接定位,必须使用布局管理器。
布局管理器可控制整个图形界面的空间布局,并严格限定其中各组件的相对位置,即使在不同的平台上运行,也能保证图形界面中组件排布的合理性,保证了组件的平台无关性。
Java 提供的布局管理器类型很多,它们分别采用不同的布局策略。
在默认状态下,各种容器组件都没有默认的布局管理器,如Panel 组件使用默认的FlowLayout 布局管理器,JPanel 组件则使用默认的BorderLayout 布局管理器,这种情况同样适用于容器组件的嵌套。
使用这些功能强大的布局管理器,用户可以很方便地设计出实用、美观的图形界面。
9.1 布局管理器一般传统的图形界面中,大都采用(x ,y )坐标方式,且大小及位置均需由设计者制定。
但这种方法的缺点就是在不同环境下(如不同的分辨率:由1024×768降为640×480)就有可能产生窗口画面超过显示区的困扰,如图9-1所示。
Java 为了解决这些问题,便以布局管理器(Layout Manager )来作为布局的代管人,使程序设计人员不必为这些琐碎的显示问题伤透脑筋。
布局管理器的功能包括设置计算容器的最佳和最小尺寸以及将容器中的组件大小及位置作合适的安排。
当用户调整应用软件窗口大小,或是改变分辨率时,其组件大小会被自动调整,即使在差异很大的分辨率环境下,布局管理器仍然发挥其功用。
下面介绍几种常用的布局管理器。
9.2 BorderLayout 布局管理器BorderLayout 布局管理器将整个窗口按方位分为5个部分:South ,North ,West ,East 和Center ,它是一种非常简单、实用的布局管理器,也是JBuilder X 为应用程序图形界面设置的默认布局管理器。
下面就通过一个示例来说明BorderLayout 布局管理器的使用方法,该实例将在图形界面中添加5个按钮。
布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout例3import java.awt.*;public class ExGui{private Frame f;private Button b1;private Button b2;public static void main(String args[]){ExGui that = new ExGui();that.go();}public void go(){f = new Frame("GUI example");f.setLayout(new FlowLayout());//设置布局管理器为FlowLayoutb1 = new Button("Press Me");//按钮上显示字符"Press Me"b2 = new Button("Don't Press Me");f.add(b1);f.add(b2);f.pack();//紧凑排列,其作用相当于setSize(),即让窗口尽量小,小到刚刚能够包容住b1、b2两个按钮f.setVisible(true);}}查看运行结果1. FlowLayoutFlowLayout 是Panel,Applet的缺省布局管理器。
其组件的放置规律是从上到下、从左到右进行放置,如果容器足够宽,第一个组件先添加到容器中第一行的最左边,后续的组件依次添加到上一个组件的右边,如果当前行已放置不下该组件,则放置到下一行的最左边。
构造方法主要下面几种:FlowLayout(FlowLayout.RIGHT,20,40);/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。
在前⾯的例⼦中,使⽤到了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中的GUI框架对比选择最适合你的工具Java作为一种广泛使用的编程语言,提供了多种GUI框架供开发者选择。
这些框架各有特点和适用场景。
本文将对Java中常用的几个GUI框架进行对比,帮助你选择最适合你的工具。
一、SwingSwing是Java提供的最基本和最常用的GUI框架之一。
它提供了丰富的组件和布局管理器,可以轻松地创建各种复杂的用户界面。
Swing 的优点在于易学易用,它提供了大量的文档和示例程序,帮助开发者快速掌握和应用。
然而,Swing也有其局限性。
它的外观默认较为简陋,需要额外的工作来美化界面。
而且,在处理大量数据时,Swing的性能可能会受到影响。
因此,如果你需要创建高度定制化的用户界面或者处理大量数据,或许有其他更适合的选择。
二、JavaFXJavaFX是Oracle在Java 8中引入的新一代GUI框架。
相比于Swing,JavaFX提供了更现代化,更美观的用户界面设计。
它支持页面式布局,可以使用CSS进行界面样式的定制,同时还提供了丰富的动画和多媒体支持。
JavaFX还具有良好的跨平台性能,可以在不同操作系统下获得一致的用户体验。
它也能很好地集成到现有的Swing应用程序中,方便开发者逐步迁移。
然而,JavaFX在一些细节上还不够完善,文档和示例相对较少,对于初学者来说学习曲线可能较陡峭。
此外,JavaFX在某些方面的功能支持可能不及Swing,尤其是在一些特殊需求的场景下。
三、AWTAWT是Java最早提供的GUI框架,它直接使用了底层操作系统的原生组件。
AWT的优点在于性能较高,因为它充分利用了底层操作系统的原生支持。
然而,AWT的外观和功能相对较为有限,对于一些复杂的界面和布局需求,可能支持不够理想。
另外,AWT仅支持部分平台,可能存在跨平台性能方面的问题。
四、Java SWTSWT是一种由Eclipse基金会开发并维护的GUI框架。
它利用了操作系统的底层图形系统,提供了更接近原生的界面和更好的性能。
一、实验目的通过本次实验,掌握Java Swing框架中常用的布局管理器,如FlowLayout、BorderLayout、GridLayout、GridBagLayout等,并学会如何使用这些布局管理器对窗口进行合理布局,提高GUI应用程序的界面设计能力。
二、实验环境1. 开发工具:Eclipse2. 开发语言:Java3. 环境配置:Java Development Kit(JDK)版本为1.8三、实验内容1. 流式布局(FlowLayout)2. 边界布局(BorderLayout)3. 网格布局(GridLayout)4. 网格袋布局(GridBagLayout)四、实验步骤1. 流式布局(FlowLayout)(1)创建一个窗口,并设置窗口标题为“FlowLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为FlowLayout。
(4)运行程序,观察窗口布局效果。
2. 边界布局(BorderLayout)(1)创建一个窗口,并设置窗口标题为“BorderLayout”。
(2)在窗口中添加四个标签,分别为“North”、“South”、“East”和“West”。
(3)设置窗口的布局管理器为BorderLayout。
(4)运行程序,观察窗口布局效果。
3. 网格布局(GridLayout)(1)创建一个窗口,并设置窗口标题为“GridLayout”。
(2)在窗口中添加四个按钮,分别为“Button1”、“Button2”、“Button3”和“Button4”。
(3)设置窗口的布局管理器为GridLayout,并设置每行和每列的组件数量为2。
(4)运行程序,观察窗口布局效果。
4. 网格袋布局(GridBagLayout)(1)创建一个窗口,并设置窗口标题为“GridBagLayout”。
borderlayout用法BorderLayout是Java中常用的布局管理器之一,它将容器分为5个区域:北、南、东、西和中心。
在使用BorderLayout时,可以将组件添加到不同的区域中,从而实现灵活的布局效果。
具体用法如下:1. 创建一个JFrame或JPanel等容器组件,并设置其布局管理器为BorderLayout。
2. 使用add方法将需要布局的组件添加到容器中,并指定其所在的区域。
例如:frame.add(new JButton('North'), BorderLayout.NORTH);frame.add(new JButton('South'), BorderLayout.SOUTH);frame.add(new JButton('East'), BorderLayout.EAST);frame.add(new JButton('West'), BorderLayout.WEST);frame.add(new JButton('Center'), BorderLayout.CENTER);3. 可以使用setHgap和setVgap方法设置组件之间的水平和垂直间距。
4. 如果一个区域中添加了多个组件,则它们将按照添加的顺序依次排列。
5. 如果某个区域没有添加任何组件,则该区域将不会显示出来。
6. 可以使用remove方法将已添加的组件从容器中移除。
7. 可以使用setPreferredSize方法设置组件的首选大小,以便更好地控制布局效果。
总之,BorderLayout是一种简单易用的布局管理器,适用于各种大小和形状的容器组件,可以轻松实现各种布局效果。
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。
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 ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。
JPanel缺省是初始化一个FlowLayout,而content pane缺省是初始化一个BorderLayout。
下面将分别介绍几种最常用的布局管理器:FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout和GridBagLayout。
代码演示每一个布局管理器都会有一个代码演示,xxxLayoutDemo.java(见附件)。
这些文件主要有三个方法组成:addComponentsToPane()提供布局逻辑(依据不同的布局管理器和UI内容)。
Java代码1public static void addComponentsToPane(Container pane) {。
}2/**3*createAndShowGUI()实例化一个JFrame,通过它的ContentPane加载布局逻辑内容。
4*/5private static void createAndShowGUI() {6// Create and set up the window.7JFrame frame = new JFrame("FlowLayoutDemo");8frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);9// Set up the content pane.10addComponentsToPane(frame.getContentPane());11// Display the window.12frame.pack();13frame.setVisible(true);14}15//main()程序入口,单独起一个线程,实例化UI。
16public static void main(String[] args) {17javax.swing.SwingUtilities.invokeLater(new Runnable() {18public void run() {19createAndShowGUI();20}21});22}FlowLayoutFlowLayout类是最简单的布局管理器。