java常用布局管理器
第9章 布局管理器
第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);/*第一个参数表示组件的对齐方式,指组件在这一行中的位置是居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。
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中的GUI框架对比选择最适合你的工具
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”。
浅谈Java布局管理器及其应用
Ca ao tFo au 等 。 图 1中 每 一 个 容 器 都 有 r y u、lwLo t L Ly u 属性 ,可 以在 对象 监 视 器 中 定义 布局 管 理 器 ao t
类型 , 如图 2 所示 。 2 Y ao t . X Ly u 布局管理器 1 这个布局管理器与其他开发工具 的窗体设计器
1112或 支 持 它 们 的 G 开 发 T. 如 : ule、 .、. UI 具 j i r b d
VsaAg r aa等等 。 i l ef v u oI 现在 就 以 fule 开 发 T具 bi r d 详 细说 明 AWT 中提 供 的 多种 布局 管 理 器 ,如 XY—
La o 、 r e La out fd y y ut Bo d r y G i La out rd g y G i Ba La out
工具 , 解决硬性设置组件而造成布局混乱的问题 , 这 就是布局管理器 (ao t ngr Ly u Maae 。 ) 在整 个 A T中 , 基 本 的关 系 就是 构 件 、 W 最 容器
维普资讯
一
一
一
Ja a 布局管理 v
新疆 天择数码科 技有 限公
摘
要
本 文 阐述 了Jv aa中的 布局 管 理 器在 开发 跨 平 台语 言的 重要 性 , 细 介 绍 了布局 管 理 详
器 的类 型 、 点及 其使 用方 法 , 特 列举 了 Jv 布 局 管理 器应 用 实例 。 aa
维普资讯
组 件 名称 , 回值 Байду номын сангаас C mp nn。 返 o o et
下 面我们 举 个 例子 看 如 何使 用 B r eLy u 布 od r ao t
borderlayout用法
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用法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布局管理器
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 swing布局详解(附示例图)
当选择使用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类是最简单的布局管理器。
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(); } }。
java题带答案
java题带答案Java期末考试题库选择题(ABCD)1、以下选项中,哪些属于JDK工具?(多选)A、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具(C)2、Java属于以下哪种语言?A、机器语言B、汇编语言C、高级语言D、以上都不对(AD)1、以下选项中,哪些属于合法的标识符?(多选)ADA、Hello_WorldB、claC、123uernameD、uername123(AD)2、关于方法重载的描述,以下选项中哪些是正确的?(多选)(AD)ABDA、方法名必须一致B、返回值类型必须不同C、参数个数必须一致D、参数的个数或类型不一致(C)3、以下关于变量的说法错误的是?CA、变量名必须是一个有效的标识符B、变量在定义时可以没有初始值C、变量一旦被定义,在程序中的任何位置都可以被访问D、在程序中,可以将一个byte类型的值赋给一个int类型的变量,不需要特殊声明(ABCD)4、以下选项中,witch语句判断条件可以接收的数据类型有哪些?(多选)ABCDA、intB、byteC、charD、hort(AC)7、下列语句哪些属于循环语句?(多选)ACA、for语句B、if语句C、while语句D、witch语句(A)8、下面哪种写法可以实现访问数组arr的第1个元素AA、arr[0]B、arr(0)C、arr[1]D、arr(1)(B)9、以下哪个选项可以正确创建一个长度为3的二维数组?(B)CA、newint[2][3];B、newint[3][];C、newint[][3];D、以上答案皆不对(A)10、请先阅读下面的代码。
int某=1;inty=2;if(某%2==0){ y++;}ele{y--;}Sytem.out.println(\上面一段程序运行结束时,变量y的值为下列哪一项?A、1B、2C、3D、witch语句(B)1、在类的继承关系中,需要遵循以下哪个继承原则?A、多重B、单一C、双重D、不能继承(C)2、在Java语言中,以下哪个关键字用于在方法上声明抛出异常?A.tryB.catchC.throwD.throw(ABC)3、关于uper关键字以下说法哪些是正确的?(多选)A、uper关键字可以调用父类的构造方法B、uper关键字可以调用父类的普通方法C、uper与thi不能同时存在于同一个构造方法中D、uper与thi可以同时存在于同一个构造方法中(ABCD)4、以下说法哪些是正确的?(多选)A、Java语言中允许一个类实现多个接口B、Java语言中不允许一个类继承多个类C、Java语言中允许一个类同时继承一个类并实现一个接口D、Java语言中允许一个接口继承一个接口(C)5、类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?A、publicB、protectedC、privateD、default(AC)6、关于抽象类的说法哪些是正确的?(多选)A、抽象类中可以有非抽象方法。
java_swing面试题目(3篇)
第1篇一、Java Swing基本概念1. 什么是Java Swing?答:Java Swing是一种用于创建图形用户界面的库,它是Java语言的一个扩展,允许开发者创建具有丰富视觉效果的桌面应用程序。
2. Swing的组件有哪些?答:Swing组件包括基本组件(如按钮、标签、文本框等)、容器组件(如面板、窗口、滚动条等)、特殊组件(如树、表格等)。
3. Swing与AWT的区别是什么?答:Swing是基于Java的,而AWT是基于本地平台的。
Swing组件在不同平台上表现一致,而AWT组件在不同平台上可能有所不同。
Swing运行速度较慢,但提供了更多功能和更好的用户体验。
二、Swing基本组件1. 如何创建一个按钮,并设置其文本和字体?答:使用JButton类创建按钮,并设置其文本和字体。
```javaJButton button = new JButton("按钮");button.setFont(new Font("宋体", Font.PLAIN, 12));```2. 如何获取并设置文本框中的文本?答:使用JTextField类创建文本框,并通过getText()和setText()方法获取和设置文本。
```javaJTextField textField = new JTextField();String text = textField.getText(); // 获取文本textField.setText("新文本"); // 设置文本```3. 如何使用单选按钮(JRadioButton)实现多选?答:使用JRadioButton类创建单选按钮,并使用ButtonGroup类将它们分组。
```javaJRadioButton radioButton1 = new JRadioButton("选项1");JRadioButton radioButton2 = new JRadioButton("选项2");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);```4. 如何使用复选框(JCheckBox)实现多选?答:使用JCheckBox类创建复选框,它们之间互不影响。
javafx中pane用法
javafx中pane用法JavaFX中的Pane用法JavaFX是用于构建富互联网应用程序的Java库。
它提供了一组丰富的图形化界面(GUI)控件,以及用于布局和样式的强大工具。
其中,Pane是JavaFX中非常重要的一个布局容器,它允许开发人员在GUI应用程序中创建灵活和可扩展的布局。
本文将详细介绍JavaFX中Pane的用法。
我们将逐步讨论以下几个方面:1. 什么是Pane?2. Pane的常用属性和方法。
3. 使用Pane实现不同类型的布局。
4. Pane与其他布局容器(如StackPane和GridPane)的比较。
一、什么是Pane?在JavaFX中,Pane是一个基本的布局容器,用于放置和组合其他GUI 控件。
它是一个基本的面板,允许开发人员自定义和组织GUI。
Pane继承自Region类,它是一个抽象类,提供了一些基本的布局功能。
Pane本身没有明确的布局管理器,开发人员可以自由选择布局方式来组织其中的控件。
二、Pane的常用属性和方法在使用Pane之前,我们需要了解一些常用的属性和方法。
1. setPrefWidth(double value)/setPrefHeight(double value):设置Pane的首选宽度和高度。
2. setMinWidth(double value)/setMaxWidth(double value):设置Pane的最小宽度和最大宽度。
3. setMinHeight(double value)/setMaxHeight(double value):设置Pane的最小高度和最大高度。
4. setBackground(Background value):设置Pane的背景颜色。
5. setStyle(String style):设置Pane的样式。
除了上述常用的属性和方法外,Pane还提供了一些其他方法用于布局和扩展:1. pane.getChildren().add(Node child):将子节点添加到Pane中。
JavaGUI编程与Swing库
JavaGUI编程与Swing库Java是一种功能强大的编程语言,被广泛用于开发各种应用程序。
GUI(图形用户界面)是一种用户通过图形方式与计算机进行交互的界面。
Java 提供了丰富的GUI编程工具,其中最常用的就是Swing库。
本文将深入探讨JavaGUI编程与Swing库的相关知识。
一、Swing库概述Swing是Java中的一个GUI工具包,提供了一系列的组件和容器来构建各种类型的窗口和用户界面。
Swing库的优点在于其跨平台性能,可以在不同操作系统上运行,并且提供了丰富的可自定义组件。
Swing库使用面向对象的设计模式,易于学习和使用。
二、Swing组件1. JFrame类JFrame是Swing库中最常用的顶层容器组件,用于创建窗口。
可以通过JFrame类的构造方法和方法设置窗口的大小、标题、布局等属性。
2. JPanel类JPanel是Swing库中的一个容器组件,用于放置其他组件。
可以通过JPanel类的构造方法和方法设置面板的布局、背景颜色等属性。
3. JButton类JButton是Swing库中的一个常用按钮组件,用于触发特定的操作。
可以通过JButton类的构造方法和方法设置按钮的文本、图标、事件监听等属性。
4. JLabel类JLabel是Swing库中的一个标签组件,用于显示文本或图像。
可以通过JLabel类的构造方法和方法设置标签的文本、图像、字体等属性。
5. JTextField类JTextField是Swing库中的一个文本框组件,用于接收用户的输入。
可以通过JTextField类的构造方法和方法设置文本框的大小、内容、是否可编辑等属性。
6. JCheckBox类JCheckBox是Swing库中的一个复选框组件,用于提供多个选项供用户选择。
可以通过JCheckBox类的构造方法和方法设置复选框的文本、选中状态等属性。
7. JRadioButton类JRadioButton是Swing库中的一个单选按钮组件,用于提供多个选项供用户选择,但只能选择一个。
Java Swing布局管理器之OverLayout
OverlayLayout是用于排列重叠组件的布局管理器。
它的用途是以一些对齐的点为基准将一些组件层叠的放置在布局容器中。
组件的横轴和纵轴的对齐点介于0.0和1.0之间。
横轴(X轴)上0.0代表组件的左侧面,1.0代表组件的右侧面;纵轴(Y轴)上0.0和1.0分别代表组件的顶部和底部。
构造函数public OverlayLayout(Container target)因为构造函数不会为target对象安装结果布局管理器,所以我们还必须调用setLayout()来完成此功能。
JPanel p1 = new JPanel();OverlayLayout overlay = new OverlayLayout(p1);p1.setLayout(overlay);在OverlayLayout布局管理器中,每个组件都有一对横纵坐标值,每个组件的位置只和它本身的横纵坐标值有关,换句话说就是组件以他自己的位置作为基准,横轴上0.0和1.0分别代表组件的左侧面和右侧面;纵轴上0.0和1.0分别代表组件的顶部和底部,和容器位置无关。
如果一个组件的alignmentX属性设置为0.5,原本左侧面的位置对应0.0,现在变成了0.5,那么,现在组件的位置就要向左移动width/2的距离,使左侧面的位置对应现在的0.0。
纵轴亦是如此,明白了吗?// OverlayTest.java// A test of the OverlayLayout manager allowing experimentation. //importimportimportpublic JFrame {public OverlayTest() {super("OverlayLayout Test");setSize(500, 300);setDefaultCloseOperation(EXIT_ON_CLOSE);final Container c = getContentPane();c.setLayout(new GridBagLayout());final JPanel p1 = new GridPanel();final OverlayLayout overlay = new OverlayLayout(p1);p1.setLayout(overlay);final JButton jb1 = new JButton("B1");final JButton jb2 = new JButton("B2");final JButton jb3 = new JButton("B3");Dimension b1 = new Dimension(60, 50);Dimension b2 = new Dimension(80, 40);Dimension b3 = new Dimension(100, 60);jb1.setMinimumSize(b1);jb1.setMaximumSize(b1);jb1.setPreferredSize(b1);jb2.setMinimumSize(b2);jb2.setMaximumSize(b2);jb2.setPreferredSize(b2);jb3.setMinimumSize(b3);jb3.setMaximumSize(b3);jb3.setPreferredSize(b3);SimpleReporter reporter = new SimpleReporter();jb1.addActionListener(reporter);jb2.addActionListener(reporter);jb3.addActionListener(reporter);p1.add(jb1);p1.add(jb2);p1.add(jb3);JPanel p2 = new JPanel();p2.setLayout(new GridLayout(2,6));p2.add(new JLabel("B1 X", JLabel.CENTER));p2.add(new JLabel("B1 Y", JLabel.CENTER));p2.add(new JLabel("B2 X", JLabel.CENTER));p2.add(new JLabel("B2 Y", JLabel.CENTER));p2.add(new JLabel("B3 X", JLabel.CENTER));p2.add(new JLabel("B3 Y", JLabel.CENTER));p2.add(new JLabel(""));final JTextField x1 = new JTextField("0.0", 4); // Button1 x alignmentfinal JTextField y1 = new JTextField("0.0", 4); // Button1 y alignmentfinal JTextField x2 = new JTextField("0.0", 4);final JTextField y2 = new JTextField("0.0", 4);final JTextField x3 = new JTextField("0.0", 4);final JTextField y3 = new JTextField("0.0", 4);p2.add(x1);p2.add(y1);p2.add(x2);p2.add(y2);p2.add(x3);p2.add(y3);GridBagConstraints constraints = new GridBagConstraints();c.add(p1, constraints);constraints.gridx = 1;JButton updateButton =updateButton.addActionListener( ActionListener() {actionPerformed(ActionEvent ae) {jb1.setAlignmentX(Float.valueOf(x1.getText().trim()).floatValue());jb1.setAlignmentY(Float.valueOf(y1.getText().trim()).floatValue());jb2.setAlignmentX(Float.valueOf(x2.getText().trim()).floatValue());jb2.setAlignmentY(Float.valueOf(y2.getText().trim()).floatValue());jb3.setAlignmentX(Float.valueOf(x3.getText().trim()).floatValue());jb3.setAlignmentY(Float.valueOf(y3.getText().trim()).floatValue());p1.revalidate();}});c.add(updateButton, constraints);constraints.gridx = 0;constraints.gridy = 1;constraints.gridwidth = 2;c.add(p2, constraints);}main(String args[]) {OverlayTest ot =ot.setVisible(}ActionListener {actionPerformed(ActionEvent ae) {System.out.println(ae.getActionCommand());}}JPanel {paint(Graphics g) {int w = getSize().width;int h = getSize().height;g.setColor(Color.red);g.drawRect(0,0,w-1,h-1);g.drawLine(w/2,0,w/2,h);g.drawLine(0,h/2,w,h/2);}}}最后提醒,使用OverlayLayout布局管理器关键要记住X,Y轴对应组件位置,和容器没有关系。
Java形界面SwingJavaFX和AWT
Java形界面SwingJavaFX和AWT Java形界面Swing、JavaFX和AWTJava是一种广泛应用的编程语言,其强大的图形界面(GUI)库使得开发者能够创建各种各样的用户界面。
在Java中,有三种主要的GUI库,它们分别是Swing、JavaFX和AWT。
本文将详细介绍这三种GUI库的特性和使用方法。
一、SwingSwing是Java提供的一套用于构建图形界面的库,它基于AWT库进行了扩展。
Swing提供了丰富的组件和布局管理器,使得开发者能够轻松地创建漂亮和交互性强的界面。
1.1 组件Swing提供了大量的组件,包括按钮、文本框、标签、列表框、表格等。
开发者可以通过组合这些组件来构建复杂的界面。
Swing组件的特点是可定制性高,开发者可以自定义组件的外观和行为。
1.2 布局管理器Swing通过布局管理器来自动调整组件的位置和大小。
常用的布局管理器有FlowLayout、BorderLayout、GridLayout和GridBagLayout。
开发者可以根据界面的需要选择合适的布局管理器。
1.3 事件处理Swing使用事件模型来处理用户的输入和其他操作。
开发者可以为组件添加事件监听器,响应用户的操作。
事件处理是Swing应用中的重要部分,可以使界面与用户产生交互。
二、JavaFXJavaFX是Oracle推出的新一代Java GUI库。
与Swing相比,JavaFX提供了更多的现代化特性,包括动画效果、3D支持和富文本等。
2.1 UI控件JavaFX提供了一套丰富的UI控件,包括按钮、标签、文本框、下拉框等。
这些控件样式多样,并且支持CSS样式表进行自定义。
2.2 布局JavaFX使用场景图(Scene Graph)来组织界面元素。
开发者可以使用各种布局容器来构建界面,如VBox、HBox、BorderPane等。
2.3 动画效果JavaFX内置了强大的动画框架,开发者可以轻松地创建平滑的过渡效果、缩放动画和旋转动画等。
setlayout的用法
setlayout的用法setLayout方法是Java的一个布局管理器重要的方法,也是GUI 编程的基础。
它的用法在实现Java程序制作的GUI界面中显得尤为重要,本文将对setLayout的用法及它的布局管理器包括FlowLayout、GridLayout和BorderLayout进行详细地剖析。
一、 setLayout的用法setLayout方法的作用是设置容器的布局管理器,在使用GUI编程时容器是必不可少的,而容器要想使用布局管理器来管理窗口中的组件,就必须调用setLayout方法。
在不同的操作系统上,setLayout方法的写法也有所不同,如果是在Java SE环境中,它的写法为:public void setLayout(LayoutManager manager)其中,LayoutManager是一个布局上下文,它指定容器中的组件的布局方式。
它允许程序员按照自己的意愿改变容器的布局。
一般地,调用setLayout方法的时候要指定布局管理器,因此在使用setLayout方法前,必须有一个布局管理器,在Java中有三种布局管理器:FlowLayout、GridLayout和BorderLayout。
二、局管理器1. FlowLayoutFlowLayout是一种比较简单的布局管理器,它使用组件的排列顺序来安排组件的位置,组件是水平排列的,当一行排满后,自动换行,它是容器的默认布局。
调用FlowLayout的方法如下:Container.setLayout(new FlowLayout())2. GridLayoutGridLayout可以同时安排多个控件,它的用法跟表格很类似,它将容器分成等大的网格,然后把组件按照行和列的方式排列,类似于表格。
调用GridLayout的方法如下:Container.setLayout(new GridLayout(4,2))其中,4表示行数,2表示列数。
Java 边界布局和网格布局
Java 边界布局和网格布局BorderLayout只管里容器中的5个组件的排列方式,这五个组件的位置分别位于东、南、西、北、中方向,如下图9-22所示。
图9-22 BorderLayout布局方式BoxLayout类允许垂直或水平布置多个组件,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。
BoxLayout布局管理器是用axis参数构造的,该参数指定了将进行的布局类型。
有4个选择:●X_AXIS 从左到右水平布置组件。
●Y_AXIS 从上到下垂直布置组件。
●LINE_AXIS 根据容器的ComponentOrientation属性,按照文字在一行中的排列方式布置组件。
如果容器的ComponentOrientation 表示水平,则将组件水平放置,否则将它们垂直放置。
●PAGE_AXIS 根据容器的ComponentOrientation属性,按照文本行在一页中的排列方式布置组件。
如果容器的ComponentOrientation表示水平,则将组件垂直放置,否则将它们水平放置。
GridLayout类是一个网格布局处理器,它以矩形网格形式对容器的组件进行布置。
它将容器划分为指定行×列个单元格,按组件add的顺序,依次将组件放入单元格中,可以像表格一样指定其单元格之间的水平与垂直间距。
但是,它不可以跨行与跨列,所以只适用于容器内组件排列呈类表格方式的容器布局。
GridLayout布局的功能非常强大,并在布局中也比较常用。
GridLayout构造方法如下所示:●GridLayout( ) 创建具有默认值的网格布局,即每个组件占据一行一列。
●GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。
●GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。
例如,在一个面板中,通过“setLayout(new GridLayout(3, 2));”语句,设置布局方式为3行×2列,则显示的效果如图9-23所示。
java中swing的用法
java中swing的用法Swing是Java中的一种GUI(图形用户界面)工具包,它是基于AWT(抽象窗口工具箱)开发的。
和AWT不同的是,Swing使用了Java 2D API来实现自己的用户界面元素,这使得Swing的外观和感觉更加现代化,更加灵活。
2. Swing的优点Swing的优点主要有以下几点:- 跨平台性:Swing是基于Java开发的,因此可以在任何支持Java的平台上运行,如Windows、Linux、Unix等。
- 灵活性:Swing提供了丰富的组件,开发者可以通过组合不同的组件来创建非常复杂的用户界面。
- 动态性:Swing提供了一些动画和效果来增强用户体验。
- 可定制性:Swing的外观和感觉可以通过使用不同的Look and Feel来改变,而这些Look and Feel可以在运行时动态地切换。
- 易学易用:Swing的API设计合理,很容易学习和使用。
3. Swing的组件Swing提供了很多组件,下面列举了一些常用的组件:- JLabel:标签组件,用于显示文本或图像。
- JButton:按钮组件,用于触发事件。
- JTextField:文本框组件,用于输入文本。
- JPasswordField:密码框组件,用于输入密码。
- JTextArea:文本域组件,用于显示多行文本。
- JList:列表组件,用于显示列表数据。
- JTable:表格组件,用于显示表格数据。
- JComboBox:下拉列表组件,用于选择一个选项。
- JCheckBox:复选框组件,用于选择多个选项中的一个或多个。
- JRadioButton:单选按钮组件,用于选择一个选项。
4. Swing的布局管理器在Swing中,布局管理器用于控制组件的排列。
Swing提供了多种布局管理器,下面列举了一些常用的布局管理器:- BorderLayout:边框布局管理器,将容器分成5个区域:北、南、东、西、中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java GUI布局管理概述 FlowLayout顺序排放组件 BorderLayout边界版面布局 GridLayout网格版面布局 用面板JPanel进行界面的分块布局
Java GUI布局管理概述
布局管理意义 在Java中,组件在界面上的布局由布局管理器来管理。如: Container cc=getContentPane(); cc.setLayout(new FlowLayout()); cc.add(···); 由此可见,容器的操作处理上将界面设计分成两个步骤: 通过 setLayout 方法将布局的管理交给专门的布局管理器类来完成。 通过 add 方法将将其他组件加入其中 每个容器都有一个缺省的布局管理器,用来实现布局管理。 Container的缺省管理器是 BorderLayout。 大多数的布局管理器在AWT包中,有一小部分在S小,组件的排列方式不变,组件之间的行列间距保持不变 所有组件的宽度和高度相同,其大小会随窗口的尺寸而相应改变
用面板JPanel进行界面的分块布局
JPanel概述 JPanel继承了Jcomponent,它是 一个 Swing 组件,而JComponent继承 了AWT包中的 Container,所以JPanel 是一个容器组件,在JPanel中可容放 其他组件。 JFrame、其上的内容窗格和 JPanel 的关系如图:
FlowLayout布局特点:
改变窗口的大小,那么组件的排列方式也会跟着变化 组件的顺序和组件的尺寸是确定的,不随窗口而改变
BorderLayout边界版面布局
BorderLayout类概述
这是Container对象默认的布局方式且全部居中。
构造方法
public BorderLayout() public BorderLayout(int hgap,int vgap) 说明:此时需在add方法中加上确定边界位置的参数,不加参数组件会叠 加在一起。 如:add(new JButton(“North”) , BorderLayout.NORTH);
常用的静态成员变量
NORTH:北边 SOUTH:南边 EAST:东边 WEST:西边 CENTER:居中
布局特点 :
改变窗口的大小,组件的排列方式保持不变 组件的大小会随窗口而改变 NORTH与SOUTH有确定的高度,WEST与EAST有确定的宽度
GridLayout网格版面布局
FlowLayout顺序排放组件
FlowLayout概述
根据显示区域的大小,把组件按照从左到右的顺序放置,如果一行 放不下,那么就转下一行。 构造方法 public FlowLayout() public FlowLayout(int align) public FlowLayout(int align,int hgap,int vgap) align:排放方式,常用的有: FlowLayout.CENTER:中心对齐(默认) FlowLayout.LEFT:左对齐 FlowLayout.RIGHT:右对齐
JPanel面板的构造方法
public JPanel() :创建一个FlowLayout布局的面板。 public JPanel(LayoutManger layout):创建一个指定布局的面板。
如:JPanel p = new JPanel(new BorderLayout());
布局方式
把组件放置在类似表格的矩形网格中。 预先需设定网络的行数和列数。 构造方法 public GridLayout()创建单行布局网格 public GridLayout(int rows,int cols)创建指定行列的布局网格 如果给定行列数较大,网格数多于按钮数,会自动进行列调整 public GridLayout(int rows,int cols,int hgap,int vgap) 创建指定行列,并指定行列间距的布局网格(行数、列数、行间距、列间距)