Java图形用户界面设计
- 格式:doc
- 大小:173.50 KB
- 文档页数:13
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图形用户界面实验报告
《Java图形用户界面实验报告》
一、实验目的
本次实验旨在通过使用Java图形用户界面(GUI)工具,掌握Java程序设计的
基本原理和方法,加深对Java语言的理解和应用。
二、实验内容
1. 使用Java的Swing和AWT等图形用户界面工具,设计一个简单的窗口界面。
2. 在窗口中添加按钮、文本框、标签等组件,并实现相应的事件处理。
3. 编写Java代码,实现窗口界面的布局和交互功能。
三、实验步骤
1. 首先,创建一个新的Java项目,并新建一个窗口类。
2. 在窗口类中使用Swing和AWT工具,设计窗口界面,并添加所需的组件。
3. 编写事件处理方法,实现按钮点击、文本框输入等操作的响应。
4. 调试和运行程序,检查窗口界面的布局和功能是否符合预期。
四、实验结果
经过一系列的编码和调试,最终实现了一个简单的Java图形用户界面程序。
该
程序具有良好的界面布局和交互功能,用户可以通过按钮点击和文本框输入进
行相应的操作。
五、实验总结
通过本次实验,我深入理解了Java图形用户界面的设计原理和实现方法,掌握
了Swing和AWT等GUI工具的使用技巧。
在今后的学习和工作中,我将继续
加强对Java编程的实践,不断提升自己的技能水平,为今后的软件开发工作打
下坚实的基础。
Java中的GUI界面设计和事件处理入门一、引言Java是一种面向对象的编程语言,具有广泛的应用领域。
在软件开发过程中,GUI界面设计和事件处理是非常重要的一部分。
本文将介绍Java中的GUI界面设计和事件处理的入门知识,以帮助读者了解和掌握这方面的技术。
二、GUI界面设计基础GUI(Graphical User Interface,图形用户界面)是指通过图形、图像和动画等方式来显示信息,提供用户与计算机之间的交互。
在Java中,可以使用Swing和JavaFX等库来进行GUI界面设计。
1. 布局管理器在GUI界面设计中,布局管理器用于管理组件的布局方式。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。
使用不同的布局管理器可以实现不同的界面布局效果。
2. 组件组件是GUI界面的基本元素,可以是按钮、文本框、标签、列表框等。
在Java中,可以使用JButton、JTextField、JLabel和JList等类来创建各种组件。
可以设置组件的属性,如大小、位置和样式等。
3. 事件监听器事件监听器用于捕捉用户操作产生的事件,并做出相应的处理。
在Java中,可以使用addActionListener()方法为组件添加监听器,响应用户的点击事件。
事件监听器可以以匿名内部类的形式实现,也可以作为单独的类来处理。
三、GUI界面设计实例下面以一个简单的登录界面为例,介绍如何使用Java中的GUI 界面设计来创建一个具有交互功能的窗体。
1. 导入必要的类库首先需要导入javax.swing和java.awt等类库,以便使用其中的类和方法。
2. 创建窗体可以通过继承JFrame类来创建一个窗体对象,然后设置窗体的标题、大小和关闭方式等属性。
3. 添加组件可以使用JLabel、JTextField和JButton等组件类来创建对应的界面元素,并设置它们的属性和布局。
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提供了丰富的事件处理机制和监听器,可以实现交互性功能。
开发人员可以通过监听用户的操作,及时响应并更新界面,实现更好的用户体验。
六、进行界面美化除了以上的基本设计原则,开发人员还可以通过一些额外的技巧来进一步美化用户界面。
比如使用渐变色背景、添加阴影效果、使用动画效果等。
这些技巧可以使界面更加生动、有趣,并提升用户的整体体验。
JavaSwing图形用户界面的设计与实现方法一、引言随着计算机技术的不断发展,图形用户界面(Graphical User Interface,GUI)在软件开发中扮演着越来越重要的角色。
作为用户与软件之间的沟通桥梁,GUI的设计与实现至关重要。
本文将介绍JavaSwing图形用户界面的设计与实现方法,帮助开发人员更好地利用JavaSwing创建出功能强大、用户友好的GUI界面。
二、Swing概述JavaSwing是Java提供的一套GUI组件库,它基于Java AWT (Abstract Window Toolkit)构建而成,相对于AWT,Swing提供了更加丰富的组件和更高的灵活性。
Swing拥有独立于平台的外观,通过Java代码实现GUI界面的构建和事件处理。
使用Swing可以快速实现各种界面风格,并且易于调整和扩展。
三、Swing组件的使用1. 容器类组件:容器类组件是其他组件的父容器,对应于应用程序的窗口或面板,常用的容器类组件有JFrame、JPanel、JDialog等。
通过创建容器类组件,可以将其他组件添加到容器中并管理和布局。
2. 基本组件:基本组件是构建GUI界面的基本元素,常用的基本组件有JButton、JLabel、JTextField等。
它们可以用于实现用户输入、数据展示、按钮点击等交互操作。
3. 高级组件:高级组件是Swing提供的一些特殊功能的组件,如JTable、JTree、JFileChooser等。
它们可以用于展示表格、树状结构、文件选择等复杂的用户交互功能。
四、事件处理为了响应用户的操作,GUI界面需要进行事件处理。
在JavaSwing中,事件处理分为两个阶段:事件生成和事件响应。
当用户与界面进行交互时,会生成相应的事件,如按钮点击、鼠标移动等。
开发人员需要实现事件的监听器,并在事件发生时触发相应的操作。
五、界面布局界面布局是指组件在容器中的排列方式。
在Swing中,界面布局主要通过布局管理器(Layout Manager)实现。
前言随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。
而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。
现在的应用软件越来越要求界面友好、功能强大而又使用简单。
而众所周知,在Java中进行GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。
这也是很多Java 程序员抱怨的事情。
但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。
其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。
本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。
Java中的布局管理器2.1 为什么要使用布局在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。
为了管理好这些组件的布局,我们就需要使用布局管理器。
比如说,设计一个简单的计算器,或一个文本编辑器等等。
这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。
将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。
在Java中,布局由布局管理器 (LayoutManager) 来管理。
那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢?如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。
不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。
为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。
为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。
2.2 Java的布局方式我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。
它在布局管理上采用了容器和布局管理分离的方案。
也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。
对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。
现在我们来看Java中布局管理器的具体实现。
我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的add()方法向自己内部加入组件。
同时他记录这些加入其内部的组件的个数,可以通过container.getComponentCount()方法类获得组件的数目,通过container.getComponent(i)来获得相应组件的句柄。
然后LayoutManager类就可以通过这些信息来实际布局其中的组件了。
Java已经为我们提供了几个常用的布局管理器类,例如: FlowLayout、BorderLayout、GridLayout、GridBagLayout等。
下面列表说明它们的布局特点:事实上,在大多数情况下,综合运用好这些布局管理器已可以满足需要。
当然对于特殊的具体应用,我们可以通过实现LayoutManager或LayoutManager2接口来定义自己的布局管理器。
下面我们通过几个实例来了解几个常用的布局管理器的使用方法。
点此发表你的看法>>【已有位网友发表了看法】3.1 FlowLayout/GridLayout/BorderLayout的应用实例3.1.1应用背景假设我们要编写一个简单的计算器JApplet,其基本界面如下:3.1.2解决方法通过其界面要求可知,我们可以通过将"BackSpace"和"Clear"JButton放置在一个JPanel(1)中,采用FlowLayout布局;将显示结果的JTextField和该JPanel一起放置到另外一个JPanel(2),采用GridLayout布局;而将其它的JButton则放置在另外一个JPanel(3)中,采用GridLayout布局;再将JPanel(2)和JPanel(3)加入该JApplet,即可实现界面需求。
具体实现方法如下:这样,就一切OK啦。
具体的实现代码可参见附件中的CalculateApplet.java 文件。
3.2 带工具栏和状态栏的GridLayout/BorderLayout应用实例3.2.1实际问题在很多情况下我们需要动态设置工具栏和状态栏,看下面的应用实例:以上是在视图的工具栏和状态栏都被复选的时候,以下分别为某一个没选或都未选的情况。
3.2.2解决方法1/**工具栏JToolBar采用从左开始的FlowLayout布局*/2 JToolBar toolBar = new JToolBar();3 toolBar.setBorderPainted(false); //不画边界4 toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));56/**窗体采用动态的BorderLayout布局,通过获取工具栏或状态栏的复选标记进行界面的动态调整*/7 JSplitPane splitPane = new JSplitPane();8 splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); //设置统计窗口分隔条的方向9 splitPane.setDividerLocation(300); //设置分隔条的位置10 splitPane.setOneTouchExpandable(true);11 JCheckBoxMenuItem toolBarItem = new JCheckBoxMenuItem("工具栏(T)", true);12 JLabel statusLabel = new JLabel("当前统计目标:");13 JCheckBoxMenuItem statusBarItem = new JCheckBoxMenuItem("状态栏(S)", true);14/**设置系统窗体布局并动态设置工具栏和状态栏*/15private void setLayout()16 {17if (toolBarItem.getState() &&' statusBarItem.getState())18 {19this.getContentPane().add(BorderLayout.NORTH, toolBar); 20this.getContentPane().add(BorderLayout.CENTER, splitPa ne);21this.getContentPane().add(BorderLayout.SOUTH, statusLa bel);22 }23else if (toolBarItem.getState() && !statusBarItem.getState ())24 {25this.getContentPane().add(BorderLayout.NORTH, toolBar); 26this.getContentPane().remove(statusLabel);27 }28else if (statusBarItem.getState() && !toolBarItem.getState ())29 {30this.getContentPane().add(BorderLayout.SOUTH, statusLa bel);31this.getContentPane().remove(toolBar);32 }33else if (!toolBarItem.getState() && !statusBarItem.getState())34 {35this.getContentPane().remove(toolBar);36this.getContentPane().remove(statusLabel);37 }38this.show(); //添加或移去组件后刷新界面39 }40通过该方法即可实现界面的动态刷新与调整。
3.3 GridBagLayout应用实例3.3.1实际问题GridBagLayout是Java API提供的一个较复杂的布局管理器,利用好它可以解决许多实际编程中的令人烦恼的界面设计问题。
看下面的界面应用实例:3.3.2解决方法1/**系统的界面布局实现*/2 GridBagConstraints gridBag = new GridBagConstraints();3 gridBag.fill = GridBagConstraints.HORIZONTAL; //以水平填充方式布局4 gridBag.weightx = 0; //行长不变5 gridBag.weighty = 0; //列高不变6 fromLabel.setForeground(Color.blue);7 fromLabel.setFont(new Font("Alias", Font.BOLD, 16));8this.add(fromLabel, gridBag, 0, 1, 1, 1); //指定发信人标签位置9 receiveLabel.setForeground(Color.blue);10 receiveLabel.setFont(new Font("Alias", Font.BOLD, 16));11this.add(receiveLabel, gridBag, 0, 2, 1, 1); //指定收信人标签位置及大小12 ccLabel.setForeground(Color.blue);13 ccLabel.setFont(new Font("Alias", Font.BOLD, 16));14this.add(ccLabel, gridBag, 0, 3, 1, 1); //指定抄送人标签位置及大小15 subjectLabel.setForeground(Color.blue);16 subjectLabel.setFont(new Font("Alias", Font.BOLD, 16));17 his.add(subjectLabel, gridBag, 0, 4, 1, 1); //指定主题标签位置及大小18 accessoryLabel.setForeground(Color.blue);19 accessoryLabel.setFont(new Font("Alias", Font.BOLD, 16));20this.add(accessoryLabel, gridBag, 0, 5, 1, 1); //指定附件标签位置及大小21 gridBag.weightx = 100; //行自适应缩放22 gridBag.weighty = 0;//列高不变23 fromField.setText("admin@");24this.add(fromField, gridBag, 1, 1, 2, 1); //指定发信人文本域(JTextField)位置及大小25this.add(receiveField, gridBag, 1, 2, 2, 1); //指定收信人文本域(JTextField)位置及大小26this.add(ccField, gridBag, 1, 3, 2, 1); //指定抄送人文本域(JT extField)位置及大小27this.add(subjectField, gridBag, 1, 4, 2, 1); //指定主题文本域(JTextField)位置及大小28 accessoryArea.setEditable(false);29//设置不显示水平滚动条(该JTextArea置于JScrollPane中)30 accessoryScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTA L_SCROLLBAR_NEVER);31this.add(accessoryScroll, gridBag, 1, 5, 2, 1); //指定附件文本区(JTextArea)位置及大小32 gridBag.fill = GridBagConstraints.BOTH;//采用全填充方式布局33 gridBag.weightx = 100;//行自适应缩放34 gridBag.weighty = 100;//列自适应缩放35 mailArea.setBackground(Color.blue);36 mailArea.setForeground(Color.yellow);37 mailArea.setTabSize(4);38//指定信件主体区(JTextArea)的位置及大小。