第7章 Java的图形与用户界面
第7章_Java_awt 509修改 - 副本 (2)

17
Frame类(框架)
Frame类是Container类的间接子类。当需要一个窗口时, 可使用Frame或其子类创建一个对象。窗口也是一个容器,
可以向窗口添加组件。窗口默认地被系统添加到显示器屏
幕上,因此,不允许将一个窗口添加到另一个容器中。 Frame是顶级窗口,可以显示标题,重置大小。当Frame 被关闭,将产生WindowEvent事件,Frame无法直接监听 键盘输入事件。
文字、图形、图象… 不能像标准组件一样被系统识别和承认,只起装饰作用。 不能响应用户的动作,不具有交互功能。
8
7.2 组件和容器
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方 式显示在屏幕上并能与用户进行交互的对象,例
如一个按钮,一个标签等。
给用户的技术。
目前Java主要提供了两个处理图形用户界面的类库: java.awt和javax.swing。
2
AWT:抽象窗口工具集(Abstract Windows Toolkit), 其外观取决于具体的平台,可用于Java的applet和 application。 java.awt包中包含了一个完整的类集以支持GUI程序的设 计(重量级构件),比如组件、图形等。
7 7
界面元素
容器是用来组织其他界面成分和元素的单元。
可以形成容器的层次,构筑复杂结构 Window(Frame、Applet、Dialog )
组件是图形用户界面的基本单位,它里面不再包含 其他的成分。
GUI组件是图形用户界面标准化的结果。 GUI组件的作用是完成与用户的交互。
用户自定义成分
Canvas Label TextField TextArea Scrollbar
Java图形用户界面:Swing和JavaFX的简单介绍

Java图形用户界面:Swing和JavaFX的简单介绍在计算机科学领域中,图形用户界面(GUI)是指通过图形、图像和视觉元素来与计算机程序进行交互的界面。
Java作为一种广泛使用的编程语言,提供了多种选择来构建图形用户界面。
其中,Swing和JavaFX是最常用的两种选择。
本文将对这两种Java GUI工具进行简单介绍,并探讨它们的特点和用途。
一、SwingSwing是Java提供的一套GUI工具包,旨在提供一种跨平台的解决方案。
它是在AWT(抽象窗口工具包)的基础上开发的,为开发者提供了一系列可重用的GUI组件,如按钮、文本框、标签等。
Swing的特点之一是其轻量级性能,它不依赖于操作系统的原生GUI组件,而是完全由Java代码实现。
这使得Swing应用程序可以在不同操作系统上以相同的方式运行,而无需进行任何修改。
Swing提供了丰富的组件库,使得开发者可以轻松构建复杂的用户界面。
它还支持可定制的外观和感觉,开发者可以根据自己的需求选择不同的外观主题。
此外,Swing还提供了一些高级组件,如表格、树形结构和滚动面板,使得开发者可以创建更复杂和功能强大的界面。
然而,Swing也有一些缺点。
由于其完全由Java代码实现的特性,Swing应用程序可能在性能方面存在一些问题。
尤其是在处理大量数据或复杂图形时,Swing的性能可能会受到影响。
此外,Swing的外观和感觉可能与操作系统的原生界面存在一些差异,这可能会对用户体验造成一定的影响。
二、JavaFXJavaFX是Java平台上的另一种GUI工具,它提供了更现代化和富有表现力的用户界面。
与Swing不同,JavaFX使用了一种基于场景图的方式来构建界面。
它通过使用FXML(一种基于XML的用户界面描述语言)和CSS(层叠样式表)来分离界面的结构和样式,使得界面的定制变得更加灵活和简单。
JavaFX提供了许多内置的UI组件,如按钮、文本框、标签等,这些组件具有更丰富的视觉效果和交互特性。
java题库—判断

第一章:1、CPU指的是运算器和CRT F×2、计算机与一般计算装置的本质区别是它具有存储程序和程序控制功能T*√3、在计算机中,控制器是执行算术运算和逻辑运算的部件,它的任务是对信息进行加工处理。
×4、程序在运行时发现的错误一般是程序语法上的错误。
√*5、第一代计算机时期没有操作系统。
√6、计算机中数值数据一般采用补码形式存储。
√7、利用Java语言可以开发客户端Java小程序和应用程序,以及独立的服务器应用程序等。
√8、Java2技术分为J2EE、J2SE和J2ME,其中J2SE是Java的企业版,用来针对企业级进行应用服务的开发。
×9、Java语言适合开发跨平台的应用程序。
√10、Java语言适合用来开发系统程序,像很多的操作系统及驱动程序都是用Java来编写的。
×11、Java源程序文件扩展名必须为.java,但文件名不必与(主)类名保持一致。
×12、Java的平台无关性主要是依靠JRE实现的。
×13、与Java应用程序(Application)不同,Java Applet程序的运行,需要得到客户端浏览器的支持。
√14、安装JDK时,需要配置环境变量path、classpath和JA V A_HOME。
√第三章:1、J2EE企业版是以企业为环境而开发应用程序的解决方案。
√2、J2ME小型版是致力于消费产品和嵌入式设备的最佳解决方案。
√3、J2SE标准版为桌面开发和低端商务应用提供了可行的解决方案。
√4、Java是区分大小写的语言,关键字的大小写不能搞错,如果把类class写成Class或者CLASS,都是错误的。
√5、Java源程序编写好之后,以文件的形式保存在硬盘或U盘上,源文件的名字可以随便取的,它不一定与程序的主类名一致。
×6、在JDK命令行开发工具中,用编译程序javac.exe编译生成的文件是二进制可执行文件。
Java图形用户界面设计

13
(3) 事件监听器(Listener) 事件处理机制中的核心部分,主要的功能大致可以分为 两部分:第一,监听组件,观察组件有没有发生某类事 件;第二,如果监听的组件发生了某类事件,则调用对 应的动作处理方法立刻处理这个事件。 在Java事件处理机制中,监听器处于主体地位。与事件 分类对应,监听器也相应的分成若干种类型,例如,鼠 标事件对应鼠标监听器,键盘事件对应键盘监听器,窗 口事件对应窗口监听器等。
25
5.3.2 AWT组件库常用组件举例 【问题1】 在窗口f中,有一个文本框tf,三个按钮btn_1、 btn_2、btn_3。当使用鼠标点击btn_1时,文本框显示 btn_1按钮被点击,当使用鼠标点击btn_2按钮时,文本框 显示btn_2按钮被点击,当使用鼠标点击btn_3按钮或者窗 口f的关闭按钮时,窗口关闭,程序退出。
(4) Choice Choice表示下拉选择框组件,选择框中的每一个选项称 为一个Item,Item的类型一般为String字符串。 (5) Label Label表示标签组件,主要作用在于创建提示性的文本。
23
(6) MenuBar、Menu和MenuItem MenuBar表示菜单条组件,该组件由Menu菜单构成,而 Menu菜单又可由Menu菜单和MenuItem菜单项构成。 (7) TextField TextField表示文本框组件,与文本域组件不同的是, 文本框中只能有一行文本。 (8) TextArea TextArea表示文本域组件,可以容纳多行文本。
30
(3) JRadioButton和ButtonGroup 在Swing中与Checkbox对应的是JCheckBox,实际使用时, 如果需要创建单选框组的话,经常使用的是 JRadioButton而非JCheckBox。如果将多个JRadioButton 组件放在一个ButtonGroup中时,这些JRadioButton组件 将不再具有复选功能,而是只具有单选功能,也即变成 单选框。 (4) JComboBox JcomboBox对应于AWT中的Choice,表示下拉选择框组件, 选择框中的每一个选项称为一个Item,Item的类型一般 为String字符串,也可以是指定的泛型类型。
图形用户界面

Window Panel
ScrollPane
TextArea TextField
Dialog Frame
FileDialog
Component(组件)
Java的图形用户界面的最基本组成部分是组件 (Component),组件是一个可以以图形化的方式显 示在屏幕上并能与用户进行交互的对象,例如一个按 钮,一个文本框等。
10. f.add("East", new Button("East"));
11.
//第一个参数表示把按钮添加到容器的East区域
12. f.add("West", new Button("West"));
13.
//第一个参数表示把按钮添加到容器的West区域
14. f.add("Center", new Button("Center"));
LayoutManager (布局管理器)
为了使生成的图形用户界面具有良好的平台无关性, Java语言中,提供了布局管理器这个工具来管理组件 在容器中的布局,而不使用直接设置组件位置和大小 的方式。
每个容器都有一个布局管理器,当容器需要对某个组 件进行定位或判断其大小尺寸时,就会调用其对应的 布局管理器。
North区域缺少组件
West区域缺少组件
Center区域缺少组件
GridLayout
使容器中各个组件呈网格状布局
1. import java.awt.*;
2. public class ButtonGrid {
3. public static void main(String args[]) {
第七章习题

第7章一、选择题1.下列说法中错误的一项是()。
A.组件是一个可视化的能与用户在屏幕上交互的对象B.组件能够独立显示出来C.组件必须放在某个容器中才能正确显示D.一个按钮可以是一个组件2.进行Java基本GUI设计需要用到的包是()。
A.java.io B.java.sql C.java.awt D.java.rmi 3.Container是下列哪一个类的子类()?A.Graphics B.Window C.Applet D.Component 4.java.awt.Frame的父类是()。
A.java.util.Window B.java.awt WindowC.java.awt Panel D.java.awt.ScrollPane5.下列哪个方法可以将MenuBar加入Frame中()?A.setMenu() B.addMenuBar() C.add() D.setMenuBar() 6.下列叙述中,错误的一项是()。
A.采用GridLayout布局,容器中的每个组件平均分配容器空间B.采用GridLayout布局,容器中的每个组件形成一个网络状的布局C.采用GridLayout布局,容器中的组件按照从左到右、从上到下的顺序排列D.采用GridLayout布局,容器大小改变时,每个组件不再平均分配容器空间7.当单击鼠标或拖动鼠标时,触发的事件是()。
A.KeyEvent B.ActionEvent C.ItemEvent D.MouseEvent 8.下列哪一项不属于Swing的顶层组件()?A.JApplet B.JDialog C.JTree D.Jframe9.下列说法中错误的一项是()。
A.在实际编程中,一般使用的是Component类的子类B.在实际编程中,一般使用的是Container类的子类C.Container类是Component类的子类D.容器中可以放置组件,但是不能够放置容器10.下列哪一项不属于AWT布局管理器()?A.GridLayout B.CardLayout C.BorderLayout D.BoxLayout 11.下列说法中错误的一项是()。
编程语言中的图形用户界面设计

编程语言中的图形用户界面设计在当今的计算机时代,图形用户界面(Graphical User Interface,简称GUI)已经成为了人们与计算机交互的主要方式。
而编程语言中的图形用户界面设计则是实现这种交互方式的关键。
本文将探讨编程语言中的图形用户界面设计的重要性、常见的设计原则以及一些流行的图形用户界面设计框架。
一、图形用户界面设计的重要性图形用户界面设计在编程中扮演着至关重要的角色。
好的界面设计能够提高用户的使用体验,增加程序的易用性和可访问性。
一个直观、美观且易于操作的界面能够吸引用户的注意力,提高用户的工作效率,并且减少用户出错的可能性。
因此,对于开发人员来说,图形用户界面设计是不可忽视的一环。
二、常见的图形用户界面设计原则1. 一致性:界面元素的布局、颜色和交互方式应该保持一致,这样可以使用户更容易理解和掌握程序的使用方法。
2. 可视化:界面应该尽量使用图形、图标和图片等可视化元素,以增加用户的直观感受和理解。
3. 简洁明了:界面应该尽量简洁,避免过多的复杂元素和冗余信息。
清晰的布局和简洁的文字能够帮助用户更快地找到需要的功能。
4. 反馈机制:界面应该及时给予用户操作的反馈,例如按钮按下后的状态变化、进度条的显示等,这样可以增加用户的参与感和满足感。
5. 可访问性:界面应该考虑到不同用户的需求,包括视觉障碍、听觉障碍等。
例如,提供辅助功能、调整字体大小等,以便不同用户能够方便地使用程序。
三、流行的图形用户界面设计框架1. Qt:Qt是一个跨平台的图形用户界面开发框架,支持多种编程语言,包括C++、Python等。
Qt具有丰富的界面控件和强大的功能,可以快速搭建出漂亮且功能强大的图形界面。
2. JavaFX:JavaFX是Java平台上的一个图形用户界面框架,它提供了丰富的界面控件和强大的动画效果,可以创建出现代化的用户界面。
3. Electron:Electron是一个基于Web技术的桌面应用开发框架,它使用HTML、CSS和JavaScript来构建界面。
第7章 图形用户界面的设计与实现

MyFont对应的是12磅TimesRoman类型的黑体字,
其中指定字型时需要用到Font类的三个常量: Font.PLAIN, Font.BOLD, Font.ITALIC。
若需使用该Font对象,可利用Graphics类的
setFont( )方法:
g. setFont ( MyFont ); 若指定控件的字体效果,如按钮或文本框等, 可使用控件的方法setFont( )。设btn是按钮对象, 则语句: btn.setFont(MyFont);把该按钮上显示的
字体改为12磅的TimesRoman黑体字。
getFont( )方法将返回当前Graphics或组件对 象使用的字体。
例 7-2 AvailableFonts.java
import java.applet.*; import java.awt.*; public class AvailableFont extends Applet { GraphicsEnvironment gl = GraphicsEnvironment.getLocalGraphicsEnvironment( ); String FontNames[] = gl.getAvailableFontFamilyNames( ); public void paint(Graphics g) { Font current,oldFont; oldFont = g.getFont( ); for(int i=0;i<FontNames.length;i++) { current = new Font(FontNames [i],Font.PLAIN,10); g.setFont(current); g.drawString(current.getName( ),10+i%4*120,20+i/4*15); } g.setFont(oldFont); } }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public void paint( Graphics g ) { super.paint( g ); g.setColor(Color.blue); g.drawString("java小应用程序",20,50); showStatus("小程序宽:"+getWidth()+"; 小程序高: "+getHeight()); } }
contentPane.add(text,BorderLayout.CENTER);//将 文本区添加到窗口中间 //创建图片对象并设置窗口图标 Toolkit tk=getToolkit();//得到一个Toolkit对象 Image img=tk.getImage("pic1\\a.jpg");//创建图片对 象 setIconImage(img);//设置窗口图标
创建一个名字为title的窗口。
2.设置窗口一些方法
①public void setSize(int width,int height) ②public void setVisible(boolean b) ③public void setTitle(String title)
④public void setIconImage(Image image) ⑤public void setBounds(int x,int y,int width,int height) ⑥public void pack()
javax.swing中的大部分组件,都需要 这个包中的某些类和接口来处理 javax.swing组件的各种事件:
按钮(JButton)点击和文本框 (JTextField)中回车的动作事件 (ActionEvent);
单选按钮(JRadioButton )和多选按 钮(JCheckBox)的选项事件(ItemEvent)等。
public TestFrame(String s) { super(s);//调用父类的构造函数,设置窗口的标题名 称。 Container contentPane = getContentPane();//得到窗 口内容面板 contentPane.setLayout(new BorderLayout( ));//设置 内容面板的布局为边框布局 //创建并添加文本区到窗口中间 text=new JTextArea("这是一个文本区,用来输入文 本。");
第7章 Java的图形与用户界面
一、教学目的和要求: 1.熟悉Java中图形图像处理。 2.掌握Java语言中进行用户图形界面 设计时使用的基本组件、界面的布局管理 及各种组件的事件监听处理。 3.了解界面设计的基本原则。
二、教学重点: 1.基本组件和类的使用。 2.布局设计。 3.事件监控处理。 4.了解界面设计的基本原则。 5.综合运用所学知识,设计优美、 易用的图形界面。
setSize(400,300);//设置窗口的宽、高分别为400像素 和300像素 setVisible(true);//设置窗口可见,缺省是不可见的 } public static void main (String[] args) { TestFrame w=new TestFrame("我的窗口应用程序"); } }
③public void setLayout(LayoutManager manager) 设置内容面板的布局
例7.1
import java.awt.*; import javax.swing.*; public class TestFrame extends JFrame {
JTextArea text;
7.3.3常用布局方式——Layout
边框布局(BorderLayout) 网格布局(GridLayout) 卡片布局(CardLayout) 网袋布局(GridBagLayout)等。
例7.3
import java.awt.*; import javax.swing.*; public class UsePanel extends JFrame { JTextArea text;//文本区 JButton btn[]=new JButton[5];// 有5个元素的按钮 数组
public UsePanel(String s) { super(s); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout());
text=new JTextArea("这是一个文本区,用来输入文 本。"); contentPane.add(text,BorderLayout.CENTER);//将 文本区添加到窗口中间 JPanel panel=new JPanel();//创建缺省布局方式 (FlowLayout)的面板 for(int i=0;i<btn.length;i++){//初始化5个按钮并添加 到面板中 btn[i]=new JButton("按钮"+(i+1));//循环创建5个 按钮 panel.add(btn[i]);//将按钮添加到面板中 }
7.3 容器的布局
7.3.1使用面板类JPanel设置较 复杂的布局
面板类javax.swing.JPanel可以 显示文字 显示图像 绘制图形 图7-5 是JPanel的类继承关系
①pubic JPanel() 创建一个缺省布局方式的面板。 面板的缺省布局方式为流式布局
②pubic Panel(LayoutManager layout) 创建一个指定布局方式layout的面板,布 局方式有:
javax.swing包中新增组件的事件响 应还需要使用到javax.swing.event包中的相 关类和接口。
7.2 底层容器类JFrame和JApplet
7.2.1图形界面的窗口应用程 序——JFrame
1.创建窗口
①public JFrame()
创建一个没有窗口名称窗口。
②public JFrame(String title)
contentPane.add(panel,BorderLayout.NORTH);//将 面板添加到窗口北边 setSize(400,300); setVisible(true); }
public static void main (String[] args) { UsePanel w=new UsePanel("演示面板布局"); } }
for(int i=0;i<btn.length;i++){//面板中添加5个按钮 btn[i]=new JButton("按钮"+(i+1)); panel.add(btn[i]); }
panel.setBackground(Color.WHITE); //设置 面板的背景色为白色 jsp=new JSplitPane(JSplitPane. HORIZONTAL
public void init( ) { Container contentPane = getContentPane(); //contentPane.setLayout(new BorderLayout()); text=new JTextArea("这是一个文本区,用来输入文 本。"); text.setForeground(Color.red); text.setBackground(Color.gray); contentPane.add(text,BorderLayout.NORTH); }
3.得到窗口内容面板、添加组件 和设置布局
首先要获取窗口内容面板 然后设置内容面板的布局 最后添加组件
①public Container getContentPane() 获取JFrame的内容面板(Content Pane) 组件可添加到该内容面板中。
②public void add(Component comp, Object constraints) 向内容面板中添加组件
7.8
树和表的使用
7.9
滑动杆、计时器和进度条
7.10
对话框和文件选择对话框
7.11
窗口显示图像和窗口全屏显示
7.12
键盘事件和鼠标事件
7.13
内部窗口、工具条、菜单
7.1 概述
1.java.awt包
(1)AWT是抽象窗口工具集Abstract Window Toolkit的缩写
(2)java中的几个核心包之一:
_SPLIT, text, panel);//分割窗口
contentPane.add(jsp,BorderLayout.
CENTER);//将jsp添加到内容面板的中间
setSize(400,160); setVisible(true); }
public static void main(String args[]) { UseSplitPane useSplit=new UseSplitPane("切分窗 口"); } }
public UseSplitPane(String s){ super(s);//调用父类的构造方法,设置窗口的标题名 称。 Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); text=new JTextArea("这是一个文本区,用来输入 文本。"); JPanel panel=new JPanel();//创建缺省布局方式 (FlowLayout)的面板
7.2.2 Java小应用程序—— JApplet