JAVA图形界面各种布局及使用方法
- 格式:docx
- 大小:19.55 KB
- 文档页数:3
java实验5图形⽤户界⾯设计试验常⽤布局1)、流布局: FlowLayout 从左到右,⾃上⽽下⽅式在容器中排列,控件的⼤⼩不会随容器⼤⼩变化.容器.setLayout(new FlowLayout(FlowLayout.LEFT));2)、⽹格布局: GridLayout 按照指定⾏数与列数,将容器分成⼤⼩相等的单元格每个单元格放置⼀个控件. 不能将控件放在指定单元格 容器.setLayout(new GridLayout(3,4,10,15));3)、边界布局: BorderLayout 将容器分成东、西、南、北、中五个部分 容器.setLayout(new BorderLayout()); 窗⼝的内容⾯板默认布局就是边界布局。
容器.add(控件,BorderLayout.NORTH);4)、混合布局: 使⽤JPanel,将多个布局组合在⼀起使⽤5)、绝对布局 null: 以坐标定位 容器.setLayout(null); 每个控件在放置在容器之前,必须设置其边界 setBounds(x,y,width,height); btn.setBounds(10,100,30,60);常⽤事件1)、事件源 EventSource:能够触发事件控件如:JButton,JTextField,JFrame,JComboBox,....2)、事件 Event:ActionEvent,KeyEvent,WindowEvent,TextEvent,...3)、事件侦听者Listener(接⼝) ActionListener,WindowListener,...class A implements ActionListener{public void actionPerformed(ActionEvent e){....}}A lis=new A();4)、事件处理函数public void actionPerformed(ActionEvent e){....}事件流程:事件源触发事件-->事件源侦听者接收事件-->⾃动调⽤相应事件处理函数.实践编程1.在应⽤程序窗体中安排1个⽂本框,⼀个标签。
第4章图形用户界面设计本章要点● Java图形用户界面设计的基本知识●布局管理器的应用● Java常用图形用界面设计组件的应用● Java常用组件事件处理的应用4.1 认识AWT包和Swing包用户界面是计算机用户与软件之间的交互接口。
一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。
因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。
Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。
这两部分功能由Java的两个包来完成-awt和swing。
虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。
awt包是最早被开发出来的。
但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。
比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。
这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。
这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。
由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。
但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。
awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。
Java有两个主要类库分别是Java包和Javax包。
在Java包中存放的是Java语言的核心包。
Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。
swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。
实验九Java图形用户界面设计(1)一实验目的(1)掌握Frame与面板的使用(2)布局管理器的使用(3)布局管理器的使用(4)边界风格的使用(5)掌握简单Java事件的处理二实验内容1、创建并显示一个标题为“My Frame”,背景色为白色,大小为1000×1000的框架。
在该框架中放置八个按钮,按钮的标题分别为“按钮1”、……“按钮8”。
采用FlowLayout布局管理器。
程序:import java.awt.*;import javax.swing.*;public class Con1{private JFrame f;private JButton b1,b2,b3,b4,b5,b6,b7,b8;public static void main(String args[]){Con1 c=new Con1();c.go();}public void go(){f=new JFrame("My Frame");Container con=f.getContentPane();con.setLayout(new FlowLayout());con.setBackground(Color.white);con.setLayout(new FlowLayout(FlowLayout.RIGHT,920,50));b1=new JButton("按键1");b2=new JButton("按键2");b3=new JButton("按键3");b4=new JButton("按键4");b5=new JButton("按键5");b6=new JButton("按键6");b7=new JButton("按键7");b8=new JButton("按键8");con.add(b1); c on.add(b2); c on.add(b3); c on.add(b4);con.add(b5); c on.add(b6); c on.add(b7); c on.add(b8);f.setSize(1000,1000);f.setVisible(true);}}结果:2、编写一个java程序,在程序中生成一个框架窗口,设置窗口的布局管理器为网格式布局管理器,往窗口中加入9个按钮程序:结果:3、编写一个java程序,单击窗口的“关闭”按钮时退出程序,使用BorderFactory的静态方法创建边界,运行效果如下图所示:结果:4、构造一个Frame窗口,单击窗口的“关闭”按钮时退出程序(参考JFrame的setDefaultCloseOperation方法);Frame中包含一个“Presss Me”按钮,单击该按钮,在控制台显示单击次数:“你已经单击按钮X次!”。
Java的GUI设计打造美观直观的用户界面Java是一种广泛使用的编程语言,拥有着强大的图形用户界面(GUI)设计能力。
通过使用Java提供的各种GUI库和工具,开发人员可以轻松地创建美观、直观的用户界面。
本文将介绍一些在Java中实现这样的GUI设计的方法和技巧。
一、选择合适的GUI库在Java中,有多个GUI库可供选择,比如Swing、JavaFX等。
选择合适的GUI库是设计美观直观界面的第一步。
Swing是一个成熟的GUI库,提供了丰富的组件和布局管理器,可以满足大部分GUI设计需求。
JavaFX是Java官方推荐的GUI库,它提供了更现代化的界面设计风格和更优秀的性能。
二、使用布局管理器布局管理器是GUI设计中重要的一环,它定义了组件在窗口中的位置和大小。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout等。
通过合理选择和组合这些布局管理器,可以实现各种复杂的界面布局。
三、使用合适的图标和图片图标和图片在GUI设计中起着很重要的作用,可以通过它们来提升用户界面的美观性和直观性。
Java提供了处理图标和图片的功能和类库,开发人员可以使用这些功能来加载、处理和显示各种图标和图片。
四、使用合适的颜色和字体颜色和字体也是GUI设计中非常重要的元素,可以用来强调界面的重要信息或者创建特定的视觉效果。
Java提供了各种颜色和字体的类库和功能,可以用来选择合适的颜色和字体样式。
五、增加交互性一个好的用户界面应该具有良好的交互性,能够方便用户进行操作。
Java提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
逐步掌握JavaSwingUI界面设计一、Swing界面设计概述Java Swing UI界面设计是Java语言中常用的图形用户界面(GUI)设计工具。
它提供了一系列的组件和容器,可以帮助开发人员创建出美观、交互性强的用户界面。
本文将介绍逐步掌握Java Swing UI界面设计的相关内容。
二、基础知识与组件1. Swing组件分类Java Swing UI界面设计中,可以使用多种不同类型的组件构建用户界面。
常用的Swing组件包括按钮、标签、文本框、下拉列表、菜单等。
这些组件可以通过布局管理器灵活地组合在一起,实现不同样式和功能的用户界面。
2. 布局管理器布局管理器是Java Swing UI界面设计中非常重要的一部分。
它负责决定组件在容器中的位置和大小。
Java Swing提供了多种布局管理器,如流式布局、边界布局、网格布局等。
开发人员可以根据具体需求选择适合的布局管理器,并结合组件的特性进行布局设计。
3. 事件处理在用户界面中,用户的交互行为会触发相应的事件,如点击按钮、选择菜单等。
Java Swing提供了事件模型和事件监听器机制,开发人员可以通过注册监听器来捕获和处理这些事件。
事件处理是Java Swing UI界面设计中的重要环节,可以实现用户交互的逻辑功能。
三、界面设计实例1. 登录界面设计以登录界面为例,介绍如何使用Java Swing进行界面设计。
首先,通过各种组件创建登录界面的基本元素,包括标签、文本框和按钮等。
然后,选择合适的布局管理器,将这些组件适当地放置在面板中。
接下来,通过事件监听器,实现登录按钮的点击事件,验证用户输入的用户名和密码是否正确,并进行相应的操作,如弹出提示框或跳转至其他界面。
2. 菜单设计菜单是用户界面中常见的功能区域,可以实现各种操作的选择和执行。
在Java Swing界面设计中,可以使用菜单条、菜单和菜单项等组件构建菜单。
通过设置相应的监听器,可以捕获菜单项的点击事件,并执行相应的功能操作。
java中jpanel的用法Java中JPanel的用法JPanel是Java Swing库中的一个重要组件,它用于创建可视化的用户界面。
本文将介绍JPanel的几种常见用法,包括创建和初始化JPanel、添加组件到JPanel中以及设置JPanel的布局等。
1. 创建和初始化JPanel以下是创建和初始化JPanel的步骤:•导入JPanel类:在代码开头导入类,以便在程序中使用JPanel。
•创建JPanel对象:使用JPanel panel = new JPanel();语句创建一个新的JPanel对象。
•设置JPanel的尺寸和布局:可以使用(width, height);和(layout);方法来设置JPanel的尺寸和布局。
•将JPanel添加到容器中:使用容器的add(panel);方法将JPanel添加到容器中。
import ;public class MyPanel {public static void main(String[] args) {JPanel panel = new JPanel();(500, 300);(new FlowLayout()); // 使用FlowLayout布局// 添加其他组件到panel中// ...// 将panel添加到容器中// ...}}2. 添加组件到JPanel中JPanel通常用于容纳其他组件,例如按钮、文本框等。
可以使用(component);方法将组件添加到JPanel中。
以下是向JPanel中添加按钮和文本框的示例代码:import ;import ;import ;public class MyPanel {public static void main(String[] args) {JPanel panel = new JPanel();(500, 300);(new FlowLayout()); // 使用FlowLayout布局JButton button = new JButton("Click me");(button); // 添加按钮到panel中JTextField textField = new JTextField(10);(textField); // 添加文本框到panel中// 将panel添加到容器中// ...}}3. 设置JPanel的布局JPanel的布局决定了其内部组件的排列方式。
java11-GUI图形⽤户界⾯编程⼀、⼆、三、绝对布局import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;public class GuiDemo {private JFrame f; // 窗体private JTextField tf; // ⽂本框private JButton btn1; // 按钮 1private JButton btn2; // 按钮 2private JButton btnAdd; // 按钮加号 +private JButton btnEqual; // 按钮等于 =private JButton btnClear; // 按钮清除StringBuffer sb; // 定义⼀个变量,存储⽂本框⾥⾯的数值Integer number1; // 加数Integer number2; // 被加数Integer sum; // 和boolean b; // 运算符是否被点击// 构造⽅法GuiDemo() {// 初始化原始数据initData();// 控件初始化initUI();}private void initData() {sb = new StringBuffer("");number1 = 0;number2 = 0;sum = 0;b = false;}private void initUI() {f = new JFrame("计算器");f.setSize(400, 200); // 设置窗⼝的宽⾼f.setLocation(100, 100); // 设置窗⼝的起始点// f.setLayout(new FlowLayout()); // 会重新绘制⼤⼩f.setResizable(false); // 设置窗⼝⼀旦创建好,不能在改变⼤⼩。
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内置了强大的动画框架,开发者可以轻松地创建平滑的过渡效果、缩放动画和旋转动画等。
1.布局
对于JFrame窗口,默认布局是BorderLayout布局。
对于JPanel,默认布局是FlowLayout布局。
容器可以使用方法:
setLayout(布局对象);来设置自己的布局。
(1)FlowLayout布局
FlowLayout类创建的对象称做FlowLayout型布局。
FlowLayout类的一个常用构造方法如下:
FlowLayout()
该构造方法可以创建一个居中对齐的布局对象。
例如:
FlowLayout flow=new FlowLayout();
如果一个容器con使用这个布局对象:
con.setLayout(flow);
那么,con可以使用Container类提供的add方法将组件顺序地添加到容器中,组件按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列。
FlowLayout布局对象调用flow.setAlignment(FlowLayout.LEFT);来设置组件靠左对齐
FlowLayout布局对象调用setHgap(int hgap) 方法和setVgap(int vgap)可以重新设置布局的水平间隙和垂直间隙。
(2)BorderLayout布局
BorderLayout 布局是Window型容器的默认布局,例如JFrame、JDialog都是Window类的间接子类,它们的默认布局都是BorderLayout 布局。
容器使用BorderLayout 布局,那么容器空间简单地划分为东、西、南、北、中五个区域。
每加入一个组件都应该指明把这个组件添加在哪个区域中,区域由BorderLayout中的静态常量CENTER、NORTH、SOUTH、WEST、EAST表示.
添加到某个区域的组件将占据整个这个区域。
每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,那么先前的组件将被后者替换掉。
(3)CardLayout 布局
使用CardLayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,这个被显示的组件将占据所有的容器空间。
JTabbedPane创建的对象是一个轻容器,称作选项卡窗格。
选项卡窗格的默认布局是CardLayout卡片式布局。
选项卡窗格可以使用:
add(String text,Component c);
方法将组件c添加到容器当中,并指定和该组件c对应的选项卡的文本提示是text。
(4)GridLayout布局
GridLayout是使用较多的布局编辑器,其基本布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。
1)使用GridLayout的构造方法GridLayout(int m,int n)创建布局对象,指定划分网格的行数m和列数n,例如:
GridLayout grid=new new GridLayout(10,8);
2)使用GridLayout布局的容器调用方法add将组件加入容器,组件进入容器的顺序将按照第一行第一个、第一行第二个、…第一行最后一个、第二行第一个、…最后一行第
一个、…最后一行最后一个。
(5)BoxLayout布局
用BoxLayout类可以创建一个布局对象,称为盒式布局。
BoxLayout在java.swing.border 包中。
java swing包提供了Box类,该类也是Container类的一个子类,创建的容器称作一个盒式容器,盒式容器的的默认布局是盒式布局,而且不允许更改盒式容器的布局。
因此,在策划程序的布局时,可以利用容器的嵌套,将某个容器嵌入几个盒式容器,达到你的布局目的。
使用盒式布局的容器将组件排列在一行或一列,这取决于创建盒式布局对象时,是否指定了是行排列还是列排列。
行型盒式布局容器中添加的组件的上沿在同一水平线上。
列型盒式布局容器中添加的组件的左沿在同一垂直线上。
使用Box类的类(静态)方法createHorizontalBox()可以获得一个具有行型盒式布局的盒式容器;使用Box类的类(静态)方法createV erticalBox()可以获得一个具有列型盒式布局的盒式容器。
如果想控制盒式布局容器中组件之间的距离,就需要使用水平支撑或垂直支撑。
Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct类型对象,称做水平支撑。
该水平支撑的高度为0,宽度是width。
Box类调用静态方法createVertialStrut(int height)可以得到一个不可见的垂直Struct类型对象,称做垂直支撑。
参数height决定垂直支撑的高度,垂直支撑的宽度为0。
(6)null布局
我们可以把一个容器的布局设置为null布局(空布局)。
空布局容器可以准确地定位组件在容器的位置和大小。
setBounds(int a,int b,int width,int height)方法是所有组件都拥有的一个方法,组件调用该方法可以设置本身的大小和在容器中的位置。
例如,p是某个容器:p.setLayout(null);
把p的布局设置为空布局。
向空布局的容器p添加一个组件c需要两个步骤,首先使用add(c)方法向容器添加组件,然后组件c再调用setBounds(int a,int b,int width,int height)方法设置该组件在容器中的位置和本身的大小,组件都是一个矩形结构,方法中的参数a,b是被添加的组件c的左上角在容器中的位置坐标,即该组件距容器左面a个像素,距容器上方b个像素;weidth,height 是组件c的宽和高。
2.中间容器-面板
(1)JPanel 面板
我们会经常使用JPanel创建一个面板,再向这个面板添加组件,然后把这个面板添加到底层容器或其他中间容器中。
JPanel面板的默认布局是FlowLayout布局。
可以使用JPanel 类构造方法JPanel()构造一个面板容器对象
(2)JScrollPane滚动窗格
我们可以把一个组件放到一个滚动窗格中,然后通过滚动条来观察这个组件。
例如,JTextArea不自带滚动条,因此我们就需要把文本区放到一个滚动窗格中。
可以使用JScorollPane的构造方法JScorollPane(component c)构造一个滚动窗格。
(3)JSplitPane拆分窗格
顾名思义,拆分窗格就是被分成两部分的容器。
拆分窗格有两种类型:水平拆分和垂直拆分。
水平拆分窗口用一条拆分线把容器分成左右两部分,左面放一个组件,右面放一个组件,拆分线可以水平移动。
垂直拆分窗格由一条拆分线分成上下两部分,上面放一个组件,下面放一个组件,拆分线可以垂直移动。
可以使用JSplitPane的构造方法JSplitPane(int a, Component b ,Component c)构造一个拆分窗格,参数a取JSplitPane的静
态常量HORIZONTAL_SPLIT或VERTICAL_SPLIT,以决定是水平还是垂直拆分。
后两个参数决定要放置的组件。
拆分窗格调用setDividerLocation(double position)设置拆分线的位置。
(4)JLayeredPane分层窗格
如果添加到容器中的组件经常需要处理重叠问题,就可以考虑将组件添加到JLayeredPane容器。
JLayeredPane容器将容器分成5个层,容器使用
add(Jcomponent com, int layer);
添加组件com,并指定com所在的层,其中参数layer取值JLayeredPane类中的类常量:DEFAULT_LAYER 、PALETTE_LAYER、MODAL_LAYER、POPUP_LAYER、DRAG_LAYER。
DEFAULT_LAYER是最底层,添加到DEFAULT_LAYER层的组件如果和其它层的组件发生重叠时,将被其它组件遮挡。
DRAG_LAYER层是最上面的层,如果JLayeredPane中添加了许多组件,当你用鼠标移动一组件时,可以把移动的组件放到DRAG_LAYER层,这样,组件在移动过程中,就不会被其它组件遮挡。
添加到同一层上的组件,如果发生重叠,后添加的会遮挡先添加的组件。
JLayeredPane对象调用public void setLayer(Component c,int layer)
可以重新设置组件c所在的层,调用
public int getLayer(Component c)
可以获取组件c所在的层数。