java GUI教学图形界面的层次结构

合集下载

Java GUI图形用户界面 课件

Java GUI图形用户界面  课件


setDefaultCloseOperation方法:

设置单击窗口上的关闭按钮时的事件处理方式。 JFrame.DO_NOTHING_ON_CLOSE JFrame.HIDE_ON_CLOSE


JFrame.DISPOSE_ON_CLOSE
JFrame.EXIT_ON_CLOSE
Java程序设计与实践教程—清华大学出版社
18
9.2.1 JFrame框架
Java程序设计与实践教程—清华大学出版社
19
9.2.1 JFrame框架

构造方法:

JFrame() :创建无标题窗口。 JFrame(String s) : 创建标题名字是字符串s的窗口。 例如:JFrame f = new JFrame(“Hello”);
Java程序设计与实践教程—清华大学出版社
11
9.1 Swing概述

Swing组件的分类

(1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个。
(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。 (3)特殊容器:在GUI上起特殊作用的中间层,如 JInternalJFrame,JLayeredPane,JRootPane等。 (4)基本控件:实现人机交互的组件,如Jbutton, JComboBox, JList, JMenu, JSlider, JTextField等。 (5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如 JLabel, JProgressBar, ToolTip等。 (6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件 ,如JColorChooser, JFileChoose, JFileChooser, JTable, JTextArea等。

Java课程设计GUI

Java课程设计GUI

Java课程设计GUI一、教学目标本课程的目标是让学生掌握Java语言的GUI(图形用户界面)编程。

通过本课程的学习,学生将能够理解GUI编程的基本概念,熟悉Java Swing和JavaFX两种常用的GUI库,掌握GUI应用程序的设计和实现方法。

知识目标:使学生掌握GUI编程的基本概念,理解事件驱动编程机制,熟悉Java Swing和JavaFX两种常用的GUI库。

技能目标:使学生能够运用Java语言设计和实现简单的GUI应用程序,具备解决实际问题的能力。

情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习和创新意识,使其认识到计算机技术在现代社会中的重要性。

二、教学内容本课程的教学内容主要包括GUI编程的基本概念、Java Swing和JavaFX两种常用的GUI库。

具体安排如下:1.GUI编程的基本概念:包括事件驱动编程机制、组件、布局管理器等。

2.Java Swing:包括Swing组件、事件处理、高级Swing技巧等。

3.JavaFX:包括FXML、JavaFX组件、场景图、媒体和动画等。

三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解GUI编程的基本概念、原理和方法。

2.讨论法:用于引导学生探讨和解决实际问题,培养其解决问题的能力。

3.案例分析法:通过分析典型案例,使学生更好地理解和掌握GUI编程技巧。

4.实验法:让学生动手实践,培养其编程能力和实际操作技能。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《Java GUI编程实战》2.参考书:《JavaFX编程指南》、《Swing编程指南》3.多媒体资料:教学PPT、视频教程、在线文档等。

4.实验设备:计算机、网络环境、编程软件等。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

Java语言程序设计:第十章 Java图形用户界面

Java语言程序设计:第十章 Java图形用户界面

t}ryesflrs{eaetmD{teer.fypaau{cltkC(l)o; seOperation(EXIT_ON_CLOSE);
选中“ToGoelnUyke}DsiItrMt.caiegmtjefaebreamxtaeIcHtncnmDnLheeaistoea}ep((gidf)oE.ctae;veinkxoaurarAc单.ntcllsstcieo.dTnc击ephmpoardrtetmotLi(i“FneoeEleokte(nnFnS)xoieiSttl”ec(te;kla)}iC”exzA.cgceplkneaetT=dtipsoS“rFtsanicoSNecrnaeeeav)(exlem(){nc;ASeellp”(iz)t)ei保;o()n存;)源{ 文U件I和M工an程a文g件er.getS

有间距
CENTER
的 East
组 容se器tHgap(int hgap)

setVgap(int vgap)

将组件间的水平间距设置为指定的值

将组件间的垂直间距设置为指定的值
下边的组件
South
天津职业技术师范大学
BorderLayout
…… class testFrame extends JFrame {
天津职业技术师范大学
BorderLayout
North

边 West 的
组 容器

上边的组件 CENTER
下边的组件
South
右 边 的 East 组 件
天津职业技术师范大学
BorderLayout
North
方法
左 BorderLay边out( )
West 的

Java程序设计第13章-图形用户界面GUI讲课稿

Java程序设计第13章-图形用户界面GUI讲课稿

13.1.1 抽象窗口工具集AWT
AWT由下面几部分组成: Component(组件):按钮、标签、菜单等组件。 Container(容器):扩展组件的抽象类Window、Panel、Frame等。 LayoutManager(布局管理器):定义容器中各组件的放置位置和大小
等。 Graphics(图形类):与图形处理相关的类。
这些类都放在了java.awt包中。
13.1.1 抽象窗口工具集AWT
Component
Button Label Container CheckBox Choice TextComponent Canvas
Window
Panel
TextField
TextArea
Frame
Dialog
Applet
AWT的Component类结构
13.2.1 JFrame类
类型 void
void void Container void
方法名 setVisible(boolean v)
setLocation(int x,int y) setLocationRelativeTo(null) getContentPane() setDefaultCloseOperation(int o)
成对应的功能,从而实现一次事件的处理。
C ONTENTS
目录
13.1 图形用户界面概述 13.2 窗口 13.3 常用组件与布局 13.4 事件处理 13.5 对话框 13.6 小结
13.2.1 JFrame类
JFrame(窗口)类是Container(容器)类的间接子类。一个JFrame 对象就是一个窗口,可以容纳其他组件。JFrame类的常用方法:

第六章Java图形界面

第六章Java图形界面

第六章Java图形界⾯第六章 Java图形界⾯图形界⾯(Graphic User Interface)简称GUI,是⽤图形的⽅式,借助菜单、按钮等标准界⾯元素和⿏标操作,帮助⽤户⽅便地向计算机系统发出指令、启动操作,并将系统的运⾏结果同样以图形⽅式显⽰给⽤户的技术。

图形⽤户界⾯与字符界⾯相⽐,操作简单,画⾯⽣动,深受⼴⼤⽤户的欢迎,已经成为⽬前⼏乎所有应⽤软件的既成标准。

本章主要讲述Java的图形界⾯技术,即使⽤java.awt包来创建图形界⾯的⽅法,包括AWT组件、窗⼝和菜单设计、布局管理器、绘图操作,等等。

6.1 AWT概述AWT即抽象窗⼝⼯具集(Abstract Window Tools),⽤于图形⽤户界⾯的开发。

Sun公司在其早期发布的版本JDK1.0中就提供了AWT,在其随后的多个版本中⼜逐步加以改进。

6.1.1 AWT的功能AWT的功能包括以下⽅⾯:(1)丰富的图形界⾯组件;(2)强⼤的事件处理模型图形和图象⼯具,包括形状、颜⾊、字体;(3)布局管理器,可以进⾏灵活的窗⼝布局⽽与特定窗⼝的尺⼨和屏幕分辨率;(4)⽆关数据传送类,可以通过本地平台的剪贴板来进⾏剪切和粘贴操作;(5)打印和⽆⿏标操作。

java.awt是java基本包中最⼤的⼀个,其中定义了所有GUI组件类,以及以及其他⽤于构造图形界⾯的类,如字体类Font、绘图类Graphics和图像类Image等。

表6-1列出了AWT 中的主要软件包。

表6-1 AWT中的主要软件包6.1.2 AWT的分类1. 基本组件基本组件是图形界⾯的最⼩单位,⾥⾯不再包含其他的成分,如:按钮、Button 复选框Checkbox 、组合框Choice 、列表List、⽂本域 Textfield、多⾏⽂本域Textarea、静态⽂本Label、滚动条Scrollbar等。

2. 包容器(Container)包容器是⼀种特殊的组件,⽤来包含其他组件,如:⾯板Panel、窗⼝ Windows 、对话框Dialog、⽂件对话框 Filedialog、框架Frame等。

JAVAGUI

JAVAGUI

图形用户界面设计Java的GUI简介自定义图形设计–图形、文字、图象Java 的标准组件–容器和组件–GUI 的布局事件处理图形用户界面(GUI)字符界面–用字符串、命令行的方式与用户交互图形用户界面:Graphics User Interface–用直观的图形来表示数据–用直观、方便的GUI标准组件来接收命令–GUI组成成分的标准化使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户。

用户界面设计原则控制权在用户界面与操作的风格一致性宽容(容错)性简洁与美观并重图形用户界面简介图形用户界面的构成–容器:布局、安排–标准组件–用户自定义成分设计&实现图形用户界面的工作–创建GUI各组成成分,并安排从属位置关系,根据具体需要对其进行排序,构成完整外观。

–定义GUI各成分对不同事件的响应,实现与用户的交互功能。

界面构成界面元素容器是用来组织其他界面成分和元素的单元。

–可以形成容器的层次,构筑复杂结构–Window(Frame、Applet、Dialog )组件是图形用户界面的基本单位,它里面不再包含其他的成分。

–GUI组件是图形用户界面标准化的结果。

常用的组件有:选择类的: 单选按钮、复选按钮、下拉列表;文字处理类的: 文本框、文本区域命令类的: 按钮、菜单等–GUI组件的作用是完成与用户的交互。

包括接收用户的命令、文本或选择输入,向用户显示一段文本或一个图形等。

界面元素用户自定义成分–显示文字、绘制图形、显示图象…–不能像标准组件一样被系统识别和承认,只起装饰作用。

–不能响应用户的动作,不具有交互功能。

图形用户界面(GUI)Java的图形用户界面编程:–为方便图形用户界面的开发,设计了专门的类库来生成各种标准图形界面元素和处理图形界面的各种事件,这个用来生成图形界面的类库就是java.awt包。

AWT是abstract window toolkit 抽象窗口工具集的缩写。

Java基础案例教程第8章 GUI(图形用户界面)

Java基础案例教程第8章 GUI(图形用户界面)

8.1 AWT概述
2.Panel Panel也是一个容器,但是它不能单独存在,只能存在其他容器(Window或其 子类)中,一个Panel对象代表了一个长方形的区域,在这个区域中可以容纳 其他组件。在程序中通常会使用Panel来实现一些特殊的布局。
案例代码
了解了AWT组件的相关类后,为了使读者对GUI有一个更直观的认识, 接下来通过一个案例来创建一个简单的图形界面,请查看教材文件8-1。
了对应的Java类,这些类都位于java.awt包中,接下来通过一个图例来描述这些
类的继承关系,如图所示。
从图的继承关系可以看出,在AWT中组件分为两大类,这两类的基类分别是 Component和MenuComponent。其中,MenuComponent是所有与菜单相关组 件的父类,Component则是除菜单外其他AWT组件的父类,它表示一个能以图 形化方式显示出来,并可与用户交互的对象。
8.2 布局管理器
GridBagLayout
GridBagLayout(网格包布局管理器)是最灵活、最复杂的布局管理器。与
GridLayout布局管理器类似,不同的是,它允许网格中的组件大小各不相同,
而且允许一个组件跨越一个或者多个网格。 使用GridBagLayout布局管理器的步骤如下:
(1)创建GridbagLayout布局管理器,并使容器采用该布局管理器
(2)创建GridBagContraints对象(布局约束条件),并设置该对象的相关属性
8.2 布局管理器
(3)调用GridBagLayout对象的setConstraints()方法建立GridBagConstraints对象和受控 组件之间的关联
第八章 GUI(图形用户界面)

Java语言程序设计第九章 GUI界面设计

Java语言程序设计第九章 GUI界面设计

例9-3:创建模态对话框
例9-3:创建模态对话框
import java.awt.*; public class MyFrame extends Frame { Button btnOpen=new Button(“打开”); MyFrame(String s) { super(s); // 调用父类构造方法 add(btnOpen);// 将按钮对象添加到窗体中 setSize(200,150); setVisible(true); // 设置窗体是可见的 } public static void main(String args[]) { MyFrame f=new MyFrame(“窗口”); // 创建窗体,标题为“窗口” MyDialog dlg=new MyDialog(f,“登录对话框”,true);// 创建对话框 } } class MyDialog extends Dialog //对话框类 { MyDialog(Frame f,String s,boolean b) // 构造方法,f是与对话框相关的窗体 { super(f,s,b); // 调用父类的构造方法,对话框将依赖于f窗体 setSize(120,50); setVisible(true); // 设置对话框可见 } } 【运行结果】 (如图所示:登录对话框再窗体的前方,在未关闭对话框的前提下不能操作窗体,即“打开”按钮无法使用)
3、面板(Panel)
面板是一种容器,与Window类的子类不同的是:面板 (及其子类)无边框、无标题,不能被移动、放大、 缩小或关闭。因此,面板不能作为独立的容器使用, 通常它作为中间容器,用以容纳其它组件,或子面 板。通常面板被放置在其他能独立使用的容器中, 如放置在窗体内。 Panel类的构造方法如下: Panel( );创建一个使用默认的布局管理器的面板。 Panel(LayoutManager layout);创建一个使用指 定布局管理器的面板。

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料
JLayeredPane和JRootPane。
7
9.1 Swing 简介
9.1.1 窗体组件 JFrame 9.1.2 对话框组件 JDialog 9.1.3 对话框组件 JOptionPane 9.1.4 中间容器 JPanel 与 JscrollPane 9.1.5 标签组件 JLabel 9.1.6 文本组件 JTextField 与JTextArea
5
✓Swing包在图形界面设计上比AWT更丰富,更美观。Swing 拥有4倍于AWT的用户界面组件。 ✓是AWT包基础上的扩展,在很多情况下在AWT包的部件前 加上字母J即为Swing组件的名称,如:JFrame、JApplet、 JButton等。 ✓Swing组件都是AWT的Container类的直接子类或间接子类 。
17
9.1.3 对话框组件 JOptionPane
使用上面介绍的 JDialog 可以制作消息提示对话框、确定取消对话框等常用的对话框,但相 对来说要花费一些心思才能做出来,而 JOptionPane 组件直接提供了创建上述几种常用的对 话框的方法,大大方便了编程。 1.showMessageDialog()的静态方法弹出消息对话框,显示一条消息并等待用户确定。常用 的重载方法如下。
4、设置窗体的位置。setLocationRelativeTo(Component c):设置 窗体的相对位置。如果参数为 null,则窗体在屏幕中居中对齐。
5、如果希望在关闭窗体后程序可以随之停止,需要调用方法 setDefaultClose Operation()并传入参数 JFrame.EXIT_ON_CLOSE, 这句代码设置了关闭窗体后会停止程序的运行。 此外还有其他 3 个参数,简述如下。
口");。 2)带参的构造方法:用一个字符串作为参数,此字符串将成为窗体的标题。

[Core.Java基础教程]_杨帆_14.图形用户界面-GUI程序入门

[Core.Java基础教程]_杨帆_14.图形用户界面-GUI程序入门
◦ Frame()
构造一个最初不可见的 Frame新实例。
◦ Frame(Stringtitle)
构造一个新的、最初不可见的、具有指定标题的 Frame对象。
gzyangfan@
Window与 Frame
Component提供的常用方法:
◦ voidsetLocation(int x,int y)
◦ 当用户点击 JFrame 的关闭按钮时,JFrame 会自动隐藏, 但没有关闭,可以在 windowClosing 事件中关闭。但更常 用的方式是调用 JFrame 的方法来关闭
Swing是 Java的第二代 GUI开发工具集。 Swing的组件绝大多数都是轻量级的。 Swing与 AWT 的关系与区别:
◦ AWT采用了与特定平台相关的实现,而绝大多数Swing组 件却不是。
◦ Swing 是构筑在 AWT 上层的一组 GUI 组件的集合,为保 证可移植性,它完全用 Java 语言编写
将组件移到新位置。
◦ voidsetSize(int width,int height)
调整组件的大小,使其宽度为 width,高度为 height。
◦ voidsetBounds(int x,int y,int width,int height)
移动组件并调整其大小。
◦ voidsetBackground(Colorc)
设置组件的背景色。
◦ voidsetVisible(boolean b)
根据参数的值显示或隐藏此组件。
Window提供的常用方法:
◦ voiddispose()
释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本 机屏幕资源。
gzyangfan@

Java图形界面GUI布局方式(小结)

Java图形界面GUI布局方式(小结)

Java图形界⾯GUI布局⽅式(⼩结)⽬录流式布局边界布局卡⽚布局⾃定义布局流式布局采⽤流式布局会将元素按从左到右的顺序排列,如果⼀个元素在⼀⾏中放不下,那这个元素会另起⼀⾏依然按照从左到右的顺序排列⽰例:代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 创建流式布局管理器对齐⽅式为左对齐LayoutManager layout = new FlowLayout(FlowLayout.LEFT);// 关闭窗⼝结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建内容⾯板Container contentpage = jFrame.getContentPane();// 设置内容⾯板布局⽅式为流布局contentpage.setLayout(layout);// 创建按钮JButton button1 = new JButton("1");JButton button2 = new JButton("2");JButton button3 = new JButton("3");JButton button4 = new JButton("4");JButton button5 = new JButton("5");// 设置按钮⼤⼩button1.setPreferredSize(new Dimension(100,100));button2.setPreferredSize(new Dimension(100,100));button3.setPreferredSize(new Dimension(100,100));button4.setPreferredSize(new Dimension(100,100));button5.setPreferredSize(new Dimension(100,100));// 设置按钮背景颜⾊button1.setBackground(Color.red);button2.setBackground(Color.blue);button3.setBackground(Color.pink);button4.setBackground(Color.orange);button5.setBackground(Color.yellow);// 将按钮添加到内容⾯板中contentpage.add(button1);contentpage.add(button2);contentpage.add(button3);contentpage.add(button4);contentpage.add(button5);// 设置窗⼝⼤⼩jFrame.setSize(500, 300);// 设置窗⼝可见jFrame.setVisible(true);}}边界布局采⽤边界布局会将元素分别划分到东,西,中,南,北五个⽅位,分别使⽤EAST,WEST,CENTER,SOUTH,NORTH标识,每个⽅位只能放⼀个元素⽰例代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 创建边界布局管理器BorderLayout layout = new BorderLayout();// 关闭窗⼝结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建内容⾯板Container contentpage = jFrame.getContentPane();// 设置内容⾯板布局⽅式为流布局contentpage.setLayout(layout);// 创建按钮JButton button1 = new JButton("1");JButton button2 = new JButton("2");JButton button3 = new JButton("3");JButton button4 = new JButton("4");JButton button5 = new JButton("5");// 设置按钮背景颜⾊button1.setBackground(Color.red);button2.setBackground(Color.blue);button3.setBackground(Color.pink);button4.setBackground(Color.orange);button5.setBackground(Color.yellow);// 将按钮添加到内容⾯板中// 将按钮放置到北部contentpage.add(button1,BorderLayout.NORTH);// 将按钮放置到南部contentpage.add(button2,BorderLayout.SOUTH);// 将按钮放置到西部contentpage.add(button3,BorderLayout.WEST);// 将按钮放置到东部contentpage.add(button4,BorderLayout.EAST);// 将按钮放置到中⼼contentpage.add(button5,BorderLayout.CENTER);// 设置窗⼝⼤⼩jFrame.setSize(500, 300);// 设置窗⼝可见jFrame.setVisible(true);}}卡⽚布局顾名思义,若⼀个容器使⽤卡⽚布局,其⾥⾯的所有组件就像是⼀副牌⼀样重叠在⼀起,容器只能显⽰⼀个组件,默认显⽰第⼀个组件,可以通过CardLayout中的show⽅法改变显⽰的组件⽰例显⽰第⼀个按钮显⽰第⼆个按钮代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 创建卡⽚布局管理器CardLayout layout = new CardLayout();// 关闭窗⼝结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建⾯板JPanel jPanel = new JPanel();// 设置⾯板布局⽅式为卡⽚布局jPanel.setLayout(layout);// 添加按钮设置背景颜⾊JButton jButton1 = new JButton();jButton1.setBackground(Color.pink);JButton jButton2 = new JButton();jButton2.setBackground(Color.yellow);// 将按钮添加到⾯板中并对按钮进⾏命名jPanel.add(jButton1,"bt1");jPanel.add(jButton2,"bt2");// 指定在⾯板上显⽰的按钮layout.show(jPanel, "bt2");// 将⾯板添加到窗⼝中jFrame.add(jPanel);// 设置窗⼝⼤⼩jFrame.setSize(500,300);// 设置窗⼝可见jFrame.setVisible(true);}}⾃定义布局所谓⾃定义布局就是不使⽤任何布局管理器,⽽是我们⾃⼰通过指定组件的X坐标,Y坐标,宽度,⾼度来指定组件的位置这⾥的坐标和我们平时的坐标有些区别,如下:组件是以左上⾓顶点为原点来定位坐标,使⽤⾃定义布局,要将容器使⽤的布局管理器设置为null那有的⼩伙伴会问了,既然布局管理器设置为null,那可不可以直接不设置啊,当然不⾏,如果不设置的话,组件会不显⽰⽰例代码public class Test {public static void main(String[] args) {// 创建窗⼝JFrame jFrame = new JFrame();// 设置窗⼝名称jFrame.setTitle("hello");// 关闭窗⼝同时结束程序jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 创建⾯板JPanel jPanel = new JPanel();// 使⽤⾃定义布局,将容器使⽤的布局管理器设置为nulljPanel.setLayout(null);// 添加按钮设置背景颜⾊JButton jButton1 = new JButton();jButton1.setBackground(Color.pink);JButton jButton2 = new JButton();jButton2.setBackground(Color.yellow);// 设置按钮的坐标为(100,100) ,宽度为100,⾼度为100jButton1.setBounds(new Rectangle(100,100,100,100));// 设置按钮的坐标为(220,70) ,宽度为100,⾼度为100jButton2.setBounds(new Rectangle(220,70,100,100));// 将按钮添加到⾯板中jPanel.add(jButton1);jPanel.add(jButton2);// 将⾯板添加到窗⼝中jFrame.add(jPanel);// 设置窗⼝⼤⼩jFrame.setSize(500,300);// 设置窗⼝可见jFrame.setVisible(true);}}到此这篇关于Java图形界⾯GUI布局⽅式(⼩结)的⽂章就介绍到这了,更多相关Java GUI布局内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

java程序设计图形用户界面(GUI)设计

java程序设计图形用户界面(GUI)设计
在程序中安排组件的位置和大小时,需要注意: 容器中的布局管理器负责各个组件的大小和位置,因此用户无法在这种情况
下 直 接 设 置 这 些 属 性 。 若 试 图 使 用 Java 语 言 提 供 的 setLocation(),setSize(),setBounds()等方法,则都会被布局管理器覆盖。 若用户确实需要亲自设置这些组件的位置和大小,则应该取消该容器的布局 管理器,方法为:setLayout(null)。随后,用户必须使用 setLocation()等相关 方法设置大小和位置,但这种方法将会导致程序和系统相关。 C:观感(Look and Feel) Java swing 的一个重要特征是它的可插入的“观感”体系。 Swing 运行一个默认的 Java 观感(也称为 metal 观感),还实现了模仿 Motif 和 Windows 的观感。 例题 9.2 说明了如何设置观感。 9.1.3 事件处理 在一个 GUI 程序中,为了能够接收用户的输入、命令的按键和鼠标操作等, 程序系统首先应该能够识别这些操作并做出相应的响应。通常一个键盘和鼠标操 作将引发一个系统预先定义好的事件,用户程序只要编写代码定义每个事件发生 时程序应做出何种响应即可。这些代码会在他们对应的事件发生时由系统自动调 用,这就是 GUI 程序中事件和事件响应的基本原理。 在 Java 中,除了键盘和鼠标操作,系统的状态改变也可以引发事件。可能产 生事件的组件被称为事件源,不同事件源上发生的事件种类是不同的。事件源和
A:FlowLayout 是一种基本布局,它是指把组件从左向右,从上到下地依次放在容器上,每一
行中的组件默认为居中对齐。当容器的大小改变之后,组件的大小不变,但布局 将会发生变化。
FlowLayout 是一个类,它有以下几个常用方法: public FlowLayout() Constructs a new Flow Layout with a centered alignment and a default 5-unit horizontal and vertical gap. public FlowLayout(int align) Constructs a new Flow Layout with the specified alignment and a default 5-unit horizontal and vertical gap. The value of the alignment argument must be o ne of FlowLayout.LEFT, FlowLayout.RIGHT, or FlowLayout.CENTER. Parameters:

Java程序设计第13章-图形用户界面GUI讲课稿

Java程序设计第13章-图形用户界面GUI讲课稿
【例13.2】通过继承方式创建一个新窗口 Example13_02.java
13.2.2 窗口菜单
一个窗口菜单由多个组件共同构成。 1、JMenuBar类
JMenuBar(菜单条),用于创建一个菜单条。一个窗口中只能有一个 菜单条,并且只能添加到窗口顶端。
Frame添加JMenuBar的方法是: setJMenuBar(JMenuBar menubar)
13.1.2 Swing组件
Component Container
Window JComponen
t
Frame
Dialog
JFrame JDialog
JComponent部分类层次关系
JLabel
JList AbstractButton
JMenuBar JTable JPanel
JTextComponent JTree
参数orientation为JSplitPane.HORIZONTAL_SPLIT(水平分割)或 JSplitPane.VERTICAL_SPLIT(垂直分割),left为放在左边(或上边)的组件,right为放 在右边(或下边)的组件;参数c为true表示拆分线移动时组件跟着连续变化,为false则拆分 线停止移动组件再发生变化。
13.3.3 常用布局
每个容器使用布局管理器对存放其中的组建进行位置、大小的管理。 使用布局管理器后,组件在容器中的大小和位置完全由布局管理器控制 和管理,程序员不需要也不能再对组件的位置和大小进行控制。 每一种容器都有默认的布局管理器。 可以用setLayout()方法重新设置布局管理器。
3、JScrollPane
JScrollPane提供轻量级组件的 Scrollable 视图用于管理滚动条。 用于TextArea文本框中,它不支持 重量级组件。常用构造方法:

Java GUI编程PPT教学课件

Java GUI编程PPT教学课件
第7章 GUI编程
2020/12/10
1
教学目标
图形用户界面(GUI)是程序的一种图示界面。
优秀的GUI通过给程序提供一致的外观和直观的
控件(例如按钮、滑动块、下拉列表和菜单等),
使得程序使用起来非常容易。Java API包含两种
不同类型的图形用户界面,“老的GUI”通常称为
抽象窗口工具包(AWT)GUI,它是在Java SDK
调用并传递参数
监听者实现接口:
2020/12/10
public void actionPerformed(ActionEvent e)
9
鼠标和键盘事件
♣ 鼠标事件类MouseEvent和键盘事件类KeyEvent都是
InputEvent类的子类,InputEvent类不包含任何具体的 事件,但是调用InputEvent类的getModifiers()方法,并 把返回值与InputEvent类的几个静态整型常量 ALT_MASK,CTRL_MASK,SHIFT_MASK, META_MASK,BUTTON1_MASK,BUTTON2_MASK, BUTTON3_MASK相比较,就可以得知用户在引发 KeyEvent事件时是否同时按下了功能键,或者用户单击 鼠标时所单击的是左键还是右键。
8
事件处理模型
♣事件处理由3个组成部分:事件源、事件对
象和事件监听者。
♣Java的事件处理机制中引入了委托事件模
型,不同的事件由不同的监听器处理,如
图所示的是ActionEvent事件的处理模型。
事件源 注册:btn.addActionListener(监听者对象)
注册
触发事件
ActionEvent 事件
♣java.awt包是java基本包中最大的一个包,

Java第9章GUI图形界面设计

Java第9章GUI图形界面设计
所 有 轻 量 组 件 类 的 超 类 , 它 的 子 类 都 在 javax.swing 包 中 , 如 JButton、JLabel、JMenu、JRadioButton、JList、JTextField、 JTextArea、JscrollPane等
抽象类,提供了在容器中绘制字符串和简单图形的图形环境
第9章 Java图形界面设计
•9.1 Java 图形界面基础 •9.2 •9.3 绘制图形
9.1 Java 图形界面基础
一、概述 1、用户界面:是用户与计算机进行交互的渠道。 通常分为:命令行式字符用户界面;图形用户界面 2、GUI(Graphical User Interface): 图形用户接口/界面. 3、Java对GUI设计的支持: 1)AWT(Abstract Windowing Toolkit):抽象窗口工具包 1995年,Java 1.0,它支持GUI编程的功能包括: 用户 界面组件;事件处理模型;图形和图像工具,包括形状、 颜色和字体类;布局管理器等。 2)Swing: 1998年,Java 1.2,轻量级组件(支持Table, Tree等),比AWT好,但不能完全替代AWT。 AWT中的 一些辅助类(如Graphics、Color、Font、 LayoutManager等)仍然保持不变。另外,Swing仍然使 用AWT的事件模型。
9.1 Java 图形界面基础
2、组件分类
AbstractButton
JComponent
JTextComponent
JCheckBoxMenuItem
JMenuItem
JMenu
JButton
JRadioButtonMenuItem
JToggleButton
JRadioButton

JAVA GUI程序设计还用该层次结构图中所列的类

JAVA GUI程序设计还用该层次结构图中所列的类

btn2.addActionListener(frm); // 把事件监听器frm向btn2注册
办理委托,注册监听
btn3.addActionListener(frm); // 把事件监听器frm向btn3注册
frm.setTitle("Action Event");
frm.setLayout(new FlowLayout(FlowLayout.CENTER));
ponent -font:java.awt.Font -background:java.awt.Color -foreground:java.awt.Color -preferredSize:java.awt.Dimension -visible:boolean
+getWidth():int +getHeight():int +getX(): int +getY(): int
{ Button btn=(Button) e.getSource(); // 取得事件源
if(btn==btn1)
// 如果是按下btn1按钮
frm.setBackground(Color.yellow);
根据题目要求编写语句,
else if(btn==btn2)
// 如果是按下btn2按钮
处理事件
nt
er
FocusEvent FocusListener
FocusAdapter
ItemEvent ItemListener 无
componentAdded componentRemoved
focusGained focusLost
itemStateChanged
事件、接口、适配器与事件处理方法对应

Java图形界面简介PPT教学课件

Java图形界面简介PPT教学课件

2020/12/10
9
Container(容器)
容器(Container)实际上是Component的子类,因此 容器本身也是一个组件,具有组件的所有性质,另外 还具有容纳其它组件和容器的功能。其主要功能包括:
组件的管理:方法add()可以向其中添加一个组件, remove()删除其中的一个组件,…
组件不能独立地显示出来,必须将组件放在一 定的容器中才可以显示出来。
2020/12/10
7
Component类
java.awt包中最核心的类就是Component类, 它是构成Java图形用户界面的基础,大部分组 件都是由该类派生出来的。 Component类是一 个抽象类,其中定义了组件所具有的一般功能: 基本的绘画支持(paint, repaint, update等)、字 体和颜色等外形控制(setFont, SetForeground 等)、大小和位置控制(SetSize, SetLocation等) 以及组件状态控制(SetEnable, isEnable, isVisible, isValid等) ,……。
如果用户确实需要亲自设置组件大小或位置,则应 取消该容器的布局管理器,方法为:
setLayout(null);
2020/12/10
12
javax.swing包为我们提供了更加丰富的、功 能强大的组件,称为swing组件,其中大部分 组件是轻量组件,没有同位体。swing组件的 轻组件在设计上和AWT完全不同,轻组件把 与显示组件有关的许多工作和处理组件事件的 工作交给相应的UI代表来完成,这些UI代表是 用Java语言编写的类,这些类被增加到java的 运行环境中,因此组件的外观不依赖平台,不 仅在不同平台上的外观是相同的,而且较重量 组件而言有更高的性能.

JAVAGUI图形界面

JAVAGUI图形界面

GUI容器布局FlowLayout 是Panel,Applet的缺省布局管理器。

其组件的放置规律是从上到下、从左到右进行放置 BorderLayout是Window,Frame和Dialog的缺省布局管理器。

BorderLayout布局管理器把容器分成5个区域:North,South,East,West和Center,每个区域只能放置一个组件GridLayout使容器中各个组件呈网格状布局,平均占据容器的空间,例ButtonGrid.javaCardLayout 布局管理器能够帮助用户处理两个以至更多的成员共享同一显示空间它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,当然每层都可以利用Panel来实现复杂的用户界面。

牌布局管理器(CardLayout)就象一副叠得整整齐齐的扑克牌一样,有54张牌,但是你只能看见最上面的一张牌,每一张牌就相当于牌布局管理器中的每一层。

FlowLayout布局管理器FlowLayout是Panel类的默认布局管理器FlowLayout布局对组件逐行定位,行内从左到右,一行排满后换行默认对齐方式为居中对齐不改变组件的大小,按组件原有尺寸显示组件可在构造方法中设置不同的组件间距、行距及对齐方式import java.awt.FlowLayout;import javax.swing.*;public class JPanelTest extends JFrame{public JPanelTest(){JButton jb=new JButton("确定");JTextField jt=new JTextField(10);JTextArea jta=new JTextArea(20,20);JPanel jp=new JPanel();jp.setLayout(new FlowLayout());jp.add(jt);jp.add(jb);jp.add(jta);this.add(jp);}public static void main(String[] args) {JPanelTest jt=new JPanelTest();jt.setSize(300,400);jt.setLocation(100,200);jt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jt.setVisible(true);}}FlowLayout 的构造方法new FlowLayout(FlowLayout.RIGHT,20,40);右对齐,组件之间水平间距20个像素,竖直间距40个像素;new FlowLayout(FlowLayout.LEFT);左对齐,水平和竖直间距为缺省值:5;new FlowLayout();使用缺省的居中对齐方式,水平和竖直间距为缺省值:5;package b;import java.awt.FlowLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class TestFlowLayout extends JFrame{public TestFlowLayout(){JButton jb1=new JButton("按钮1");JButton jb2=new JButton("按钮2");JButton jb3=new JButton("按钮3");JPanel jp=new JPanel();jp.setLayout(new FlowLayout(FlowLayout.LEFT));jp.add(jb1);jp.add(jb2);jp.add(jb3);this.add(jp);}public static void main(String[] args) {TestFlowLayout jf=new TestFlowLayout();jf.setSize(300,500);jf.setLocation(200,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}}BorderLayout 布局管理器BorderLayout是Frame类的默认布局管理器BorderLayout将整个容器的布局划分成东、西、南、北、中五个区域,组件只能被添加到指定的区域如不指定组件的加入部位,则默认加入到Center区域每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃package c;import java.awt.BorderLayout;import java.awt.Panel;import javax.swing.JButton;import javax.swing.JFrame;public class BorderLayoutTest extends JFrame{public BorderLayoutTest(){JButton jb1=new JButton("按钮1");JButton jb2=new JButton("按钮2");JButton jb3=new JButton("按钮3");JButton jb4=new JButton("按钮4");JButton jb5=new JButton("按钮5");Panel p=new Panel();p.setLayout(new BorderLayout(10,50));p.add(jb1,BorderLayout.NORTH);p.add(jb2,BorderLayout.SOUTH);p.add(jb3,BorderLayout.WEST);p.add(jb4,BorderLayout.EAST);p.add(jb5,BorderLayout.CENTER);this.add(p);}public static void main(String[] args) {JFrame jf=new BorderLayoutTest();jf.setSize(500,500);jf.setLocation(200,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}}▪BorderLayout型布局容器尺寸缩放原则北、南两个区域只能在水平方向缩放(宽度可调整)东、西两个区域只能在垂直方向缩放(高度可调整)中部可在两个方向上缩放GridLayout 布局管理器GridLayout型布局管理器将布局划分成规则的矩形网格,每个单元格区域大小相等.组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下.在GridLayout构造方法中指定分割的行数和列数.new GridLayout(3,4);package d;import java.awt.BorderLayout;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class TestGridLayout extends JFrame{public TestGridLayout(){JPanel jp=new JPanel();jp.setLayout(new GridLayout(4,4,5,5));//行数,列数,列间距,行间距for(int i=0;i<=9;i++){JButton jb=new JButton(Integer.toString(i));jp.add(jb);}JButton jb10=new JButton(".");JButton jb11=new JButton("+");JButton jb12=new JButton("-");JButton jb13=new JButton("*");JButton jb14=new JButton("/");JButton jb15=new JButton("=");jp.add(jb10);jp.add(jb11);jp.add(jb12);jp.add(jb13);jp.add(jb14);jp.add(jb15);JTextField jt=new JTextField(10);this.add(jt,BorderLayout.NORTH);this.add(jp);}public static void main(String[] args) {JFrame jf=new TestGridLayout();jf.setSize(200,200);jf.setLocation(200,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}} ————————————————————————————————————————import java.awt.BorderLayout;import java.awt.GridLayout;import javax.swing.*;public class TestStudent extends JFrame{/*** 程序功能:完成一个学生成绩统计页面* 1、文本输入类:JTextField* 设置可否编辑文本:void setEditable(boolean b)* 设置文本:void setText(String text)* 获取文本:String getText()** 不带参数的构造方法:JTextField()* 带参数指定文本宽度的构造方法:JTextField(int column)* 指定带文本的构造方法:JTextField(String text)** 2、密码输入类:JpasswordField* 不带参数的构造方法:JPasswordField()* 带参数指定密码宽度的构造方法:JPasswordField(int columns) * 指定密码指定带文本的构造方法:JPasswordField(String text) ** 3、多行输入类:JTextArea* 带参数的构造方法:JTextArea(int row,int columns)*/JButton jb;JTextField jt1,jt2,jt3;JTextArea jta;JLabel j1,j2,j3;public TestStudent(){j1=new JLabel("学号",SwingConstants.CENTER);j2=new JLabel("姓名",SwingConstants.CENTER);j3=new JLabel("成绩",SwingConstants.CENTER);jt1=new JTextField(10);jt2=new JTextField(10);jt3=new JTextField(10);jb=new JButton("保存");JPanel jp=new JPanel(new GridLayout(3,2,10,10));jp.add(j1);jp.add(jt1);jp.add(j2);jp.add(jt2);jp.add(j3);jp.add(jt3);this.add(jp,BorderLayout.NORTH);jta=new JTextArea(20,20);this.add(jta);this.add(jb,BorderLayout.SOUTH);}public static void main(String[] args) {JFrame jf=new TestStudent();jf.setSize(400,400);jf.setLocation(200,200);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.pack();jf.setVisible(true);}}事件处理模型一个事件可以被发送到多个不同的处理方法如果关注某个组件产生的事件,则可以在该组件上注册适当的事件处理方法,实际上注册的事件处理者方法所属类型的一个对象----事件监听器11111111111111111111111——ButtonActionFrame类import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class ButtonActionFrame extends JFrame implements ActionListener{ /*** 程序功能:单击按钮,引发一个打印事件“您单击了按钮”*/public ButtonActionFrame(){super("按钮");JButton jb=new JButton("点击按钮");JPanel jp=new JPanel();jp.add(jb);this.add(jp);ActionTest at=new ActionTest();jb.addActionListener(at);}public static void main(String[] args) {JFrame jf=new ButtonActionFrame();jf.setSize(500,600);jf.setLocation(100,100);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setVisible(true);}public void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stub}}2222222222222222222222222222——ActionTest类import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class ActionTest implements ActionListener{public void actionPerformed(ActionEvent arg0) {System.out.println("点击按钮");}} ————————————————————————————————————————————————————————————————————————————————————————————————————————-Java GUI设计中,通过注册监听器的方式对所关注的事件源进行监控。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
金桥JAVA基础教程--第六章-GUI
第六章GUI
• Graphics User Interface图形用户界面 浅谈图形界面开发
金桥JAVA基础教程--第六章-GUI
最常见的图形界面:windows操作系统
顶层容器
容器+组件
组件
金桥JAVA基础教程--第六章-GUI
层次结构
component
Button
金桥JAVA基础教程--第六章-GUI
Swing包中的JFrame面板的颜色问题:
• JFrame这样的框架,一旦创建,在其中就已经包含 一个内容面板,一般我们在往JFrame中添加组件时, 都加在了内容面板中,这个面板可以通过JFrame的 成员方法getContentPane()取出来, 所以如果设置JFrame的背景颜色,仍然会被内容面 板盖住,不如设置内容面板的背景颜色 当时如果框架中还加有其他面板,内容面板的颜色 也会被其他面板盖住,要注意一下面板的布局情况
EventObject
所有事件对象的主 类
ActionEvent
WindowAction
……
子类
金桥JAVA基础教程--第六章-GUI
布局管理器总结
• JFrame默认的布局管理器为BorederLayout • JPanel默认的布局管理器为: FlowLayout • 在布局管理器中组建的大小由布局管理器 统一管理,自己用Setsize()方法将无法设置
金桥JAVA基础教程--第六章-GUI
方法:这章的内容以制作页面为主,用面向对象的 思想去做,也是不同类的对象所组成的。经过前 段时间的学习,大家应该具备对 API 的查询和自 学类的能力,所以本章重点讲结构。
金桥JAVA基础教程--第六章-GUI
Swing与AWT
AWT是java较早的图形包 Swing包是java的图形包,对AWT进行了扩展, 同时Swing包继承于AWT包,现在的开发用 Swing包. 使用Swing包时也必须引AWT包 Swing包内的组件前面有J如:JFrame,JButton Swing包内不包含任何和平台有关的本地代码 所以Swing开发的图形界面很好的实现跨平台.
TextArea CheckBox Frame
Panel必须 放入Fram 内才可以用
Container
Window
Panel
…...
金桥JAVA基础教程--第六章-GUI
学习GUI的方法与内容
一、图形对象的布局(显示的内容如何摆放) 二、图形对象中的组件(显示的不同功能的内容) 三、事件处理(为每个组件添加功能)
金桥JAVA基础教程--第六章-GUI
• BorderLayout :把容器分为东,西,南,北,中 1、 BorderLayout (); 2、 BorderLayout (int x,int y); 指定间距

西



• GridLayout :把容器分成表格 1、 GridLayout (int x,int y); 指定行数和列数
金桥JAVA基础教程--第六章-GUI
布局管理器
• 主接口:LayoutManager • FlowLayout:线性布局管理器,组件从左到右 的顺序排列.(JPanel的默认布局管理器) • BorderLayout:组件被分布在东,西,南,北,中5 个区域内.(JFrame的默认布局管理器) GridLayout :将空间分成矩形网格 GridLayout(0,1);指行数不限,全在一列上 GridLayout(1,0);列数不限全在一行上.
事件处理初谈
事件源对象 产生某种事件来自注 册向监听器传事件对象
监听器(实现了 某种监听接口的类)
对事件做出某 种处理和回应
金桥JAVA基础教程--第六章-GUI
事件类的层次结构
EventListener 所有监听器的主接 口(标识接口)
ActionListener
WindowListener
……
子接口
金桥JAVA基础教程--第六章-GUI
• FlowLayout:线性布局 1、FlowLayout(FlowLayout.right,10,5); 指定对齐方式和水平和垂直距离 2、FlowLayout(FlowLayout.right); 默认间距为5 3、FlowLayout(); 默认间距5 默认对齐方式 居中
相关文档
最新文档