JAVA-图形程序设计
计算机科学与技术-Java语言程序设计-难点分析

学习目标1、深入Java的类和对象、继承、接口2、图形界面设计(二)3、多线程一、 Java的类和对象、继承、接口Java的类和对象:具有相同属性和方法的一组对象的集合。
类是对象的抽象;对象是客观世界存在的事或物。
所有Java程序都以类为组织单元,使用关键字class定义public class HelloWorld {public static void main(String[] args){System.out.println("Hello World!!!");}}一、 Java的类和对象、继承、接口对象类被声明后,就可用类创建对象,被创建的对象称为类的实例。
程序使用对象需依次经历4个步骤:1、声明对象:类名对象名;2、创建对象:对象名 = new 构造方法([参数表]) ;3、使用对象:引用类的属性:对象名.成员变量;引用类的方法:对象名.方法名([参数列表]);4、撤销对象。
一、 Java的类和对象、继承、接口public class Test {public static void main(String args[]){Student student = new Student(); = "张浩";student.age = 10;student.classNo = "S1班";student.hobby = "篮球";student.show();}}一、 Java的类和对象、继承、接口继承1、单根性Java语言不支持多重继承,限定一个类只能有一个超类。
在子类声明中加入extends子句来指定超类。
2、可继承性所有的Java类都直接或间接地继承ng.Object类。
类声明时,如果缺省extends子句,则该类的超类是系统声明的Object类。
一、Java的类和对象、继承、接口子类可以继承其父类的不是private的成员变量和方法。
java图形用户界面设计教程

第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图形用户界面设计

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字符串,也可以是指定的泛型类型。
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程序设计——12图形绘制

unitsImage
绘制图像-2
• drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
– 将img中的一个矩形区域绘制到当前画布的一个矩形区域,且可拉伸。 – 透明的部分不绘制(gif图片可以指定一个透明色),用于绘制不规则图像。
赵志崑
输出文字
• 将字符串输出到特定位置:
– void drawString(String str, int x, int y)
(x,y) 见TextExample.java g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100);
150
赵志崑
设置颜色
• void setColor(Color c):将当前画笔颜色设置为c。 • Color getColor():读取当前画笔颜色。 • 颜色的构造: – 构造函数Color(int r, int g, int b):参数为红、绿、蓝的值(0-255)。 – 直接使用Color类中的静态对象:如Color.blue, Color.yellow, Color.orange, ……
– style:字体形式,为Font.PLAIN,Font.BOLD,Font.ITALIC。 – size:字体的高度,单位为像素。
• 这些设置字体的方法同样可以应用于组件上显示的字体。
见FontExample.java public void paintComponent(Graphics g) { super.paintComponent(g); g.setFont(new Font(fontName,fontStyle,fontSize)); g.drawString("Hello World!",50,50); g.drawString("世界你好!",50,100); }
Java程序设计:第八章 Swing图形界面程序设计

原型 public FlowLayout(int align )
描述
FlowLayerout布局时,组件在容器以从左到右,从 上到下的方式排列。 align用于指定行对齐方式, FlowLayout.LEFT表示左 对齐,相应的有右对齐和居中对齐。
java.awt.Container的成员JLabel(2)
JFrame的成员方法
原型
public JFrame( ) public JFrame(String title) public void setDefaultCloseOperation( int operation) public void setSize(int width, int height) public void setVisible(boolean b) public Container getContentPane()
描述 构造一个无标题不可见的框架 构造一个标题为title的框架 设置当关闭框架时的操作,例如operation为 JFrame.EXIT_ON_CLOSE时表示退出程序
设置框架的大小
设置框架是否可见 返回当前框架的内容窗格
7
组件和容器 -JFrame和JLabel(3)
FlowLayout布局的成员方法:
4
组件和容器(3)
一般容器包括: 面板JPanel,滚动窗格JScrollPane,选项卡 窗格JTabbedPane和工具栏JToolBar。
专用容器包括:内部框架(JInternalFrame),分层窗格 (JLayedPane)、根窗格(JRootPane)、玻璃窗格(GlassPane )、内 容窗格(ContentPane)。
描述 构造一个父窗口为owner,标题为title,模式为 modal的对话框。Modal为true表示有模式,为false 表示无模式 设置对话框的大小
java画图板课程设计

计算机与信息工程系《JA V A程序设计》课程设计画图板专业计算机班级计000001学号00000姓名0000E-Mail 电话10000000032 时间2000006承德石油高等专科学校摘要:本程序通过调用JA V A提供的BorderLayout,Button,Color;Container;Graphics;Panel;ButtonGroup;JFrame;JPanel;UIManager等基本类进行了简单的界面设计,运用了JA V A中类的继承特性实现了对父类方法的调用,并多次使用CASE语句实现绘图菜单的选择,运用了适配器类简化了监听器类的重写工作。
关键字:UIManager、ActionListener1. 课程设计介绍本程序完成的是一个类似于Windows画图板的绘图程序。
由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项:1.新建一个空白图形文件:用于绘制新的图形。
2.打开或保存一个图形文件,便于对图形文件的管理。
3.绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。
4.可以用鼠标在绘图面板上单击拖动进行随笔画。
5.橡皮擦:可以将已绘制好的图形擦掉。
6.添加文字:可以在绘图区域内添加文字。
7.选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。
本程序中包括:宋体、隶书、华文彩云、仿宋_GB2312、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。
当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数组,是的可以随意添加系统支持的任何字体。
大大方便和简化了程序设计。
8.选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:①同时选中两者、②只选择其中一种、③两者都不选中。
深入浅出java swing程序设计-概述说明以及解释

深入浅出java swing程序设计-概述说明以及解释1.引言1.1 概述Java Swing是一种用于构建图形用户界面(Graphical User Interface,简称GUI)的Java库。
它为开发人员提供了丰富的组件和布局管理器,可以轻松创建具有各种功能和样式的交互式应用程序。
Java Swing的出现填补了Java原生GUI工具包的不足,为开发人员提供了更多的自定义和灵活性。
与AWT(Abstract Window Toolkit)相比,Swing提供了更多的组件和界面控件,同时具备更好的跨平台性。
Java Swing不仅仅是一个图形用户界面库,它还提供了一整套用于处理用户输入、图形绘制、多媒体展示等功能的类和工具。
开发人员可以利用这些工具快速构建具有丰富交互性的应用程序。
本文将深入浅出地介绍Java Swing程序设计的基本概念和技巧。
我们将从Swing的组件和布局开始,逐步展示如何创建简单且功能强大的用户界面。
通过学习本文,读者将能够掌握Java Swing的核心知识,并能够利用这些知识开发出符合自己需求的应用程序。
本文的目的是帮助读者快速上手Java Swing,了解其基本概念和使用方法。
同时,我们也将展望Java Swing的未来发展,探讨其在现代应用程序开发中的重要性和应用前景。
在接下来的正文部分,我们将详细介绍Java Swing的基本概念,包括组件、事件、布局等内容。
同时,我们还将给出一些实际的例子,以便读者更好地理解和应用所学知识。
总之,本文将从大纲所列的各个方面对Java Swing进行深入浅出的探讨,旨在帮助读者全面了解和掌握Java Swing程序设计的基本技巧和应用方法。
希望读者能够通过本文的学习,具备自主开发Java Swing应用程序的能力,并能在实际项目中灵活应用所学知识。
1.2 文章结构本文主要以深入浅出的方式介绍Java Swing程序设计。
文章分为引言、正文和结论三个部分,每个部分有相应的小节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
Swing
为什么要选择Swing:
Swing拥有一个丰富、便捷的用户界面元素集合
Swing对低层平台依赖很少,因此与平台相关的bug很少
Swing给予不同平台的用户一致的感观效果
“一次编写,到处运行”
比 AWT容易
7
如何构建图像
AWT的核心思想:
把GUI看作是一系列嵌套的组件构成,这些组件之间不但在外 观上有着包含、相邻、相交等物理关系,而且包含内部调用等 逻辑关系。
3
AWT和Swing
在Java 1.0中引入了一个包含了基本GUI程序设计的类库,称为抽 象窗口工具集(Abstract Window Toolkit, AWT)的类库:
用于编写基本的用户界面
采用将处理用户界面元素的任务委派给每个目标平台(Windows vs. Solaris)的本地GUI工具箱的方式,由本地GUI工具箱负责用 户界面元素的创建和动作:
5
Swing
1996年,Sun公司与Netscape合作创建了一个名为 Swing的用户界面库:
它将用户界面元素(按钮、菜单)绘制在空白窗口上,而对等体 只需要创建和绘制窗口——所有平台上的外观和动作一样; Swing没有完全替代AWT,而是基于AWT框架之上. Swing仅仅提供了能力更加强大的用户界面组件. 在采用swing编写的程序中,还需要使用基本的AWT处理事 件。
使用最初的AWT在Java窗口中放置一个文本框,就会有一个 低层的“对等体”文本框,用它来实际地处理文本输入。
程序可以运行在任何平台上,但感观的效果却依赖于目标平 台,因此,Sun公司的口号是“一次编写,随处使用”。
4
AWT的负面:
对于简单的应用程序,基于对等体方法的效果还是不错的; 要想编写依赖于本地用户界面元素的高质量、可移植的图形 库就会显现出缺陷。不同平台存在一些微妙差别,用户无法 获得一致的、可预见性的界面操作方式。 不同平台的AWT用户界面存在不同的bug,“一次编写,到 处调试”
GUI画面生动、操作简单,省去了控制台用户必须记忆各种命 令的麻烦。
2
图形用户界面程序需要考虑的问题:
如何实现图形界面:
如何编写定义在屏幕上的窗口(菜单、按钮)大小和位 置的程序;如何在窗口中采用多种字体显示文本; 如何显示图像;
如何处理事件:
如何处理敲击键盘,点击鼠标这样的事件,以及如 何在应用程序中添加菜单和按钮这样的界面元素。
drawString(text, x, y); //(0,0)指出所绘制组件表面的左上角
class NotHelloWorldPanel extends JPanel { public void paintComponent (Graphics g) { super.paintComponent (g); g.drawString("Not a Hello, World program", MESSAGE_X, MESSAGE_Y);
Rectangle2D rect = …; g2.draw(rect);
23
在JDK1.0的绘制方法中,采用的是整型像素坐标,而Java 2D图形则采用的是浮点坐标。 由于浮点数有两种:
float f = 1.2; //error 1.2F float f = r.getWidth();// error, (float) r.getWidth();
JDK1.2引入了Java 2D库,来实现一组功能强大的图形操作。 要想使用Java 2D库绘制图形,需要获得一个Graphics 2D类(Graphics 的子类)对象。 如果使用支持Java 2D的JDK版本,paintComponent会自动地获得一 个Graphics 2D类对象:
public void paintComponent(Graphics g)
Container contentPane=frame.getContentPane();
Component c = …; contentPane.add(c);
frame.add(c); //JDK 5.0
18
将一个绘制消息的面板添加到框架中
面板用JPanel类来实现,它具有两个很有用的特性:
Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screenSize = kit.getScreenSize(); int screenHeight = screenSize.height;
int screenWidth = screenSize.width;
只要需要重新绘图,事件处理器就会通告组件,从而引发执 行所有的组件的paintComponent()方法。 一定不要自己调用paintComponent()方法。 在需要重新绘图的时候,这个方法将被自动调用,不要人为 地干扰这个自动的处理过程。
20
在Graphics类中,用drawString方法来显示文本:
setTitle() 方法:用于改变标题栏中文本;
14
setResizable() 方法:利用一个Boolean值确定框架的大小是否 允许用户改变; setLocation(x,y)方法:重定位组件;
分辨率决定,坐标(0,0)位于屏幕的左上角;
setBounds(x,y,width,height) 方法:实现一步重定位组件大小和 位置的操作;
19
创建一个能够进行绘图的面板:
class MyPanel extends JPanel {
public void paintComponent(Graphics g)
{ …//code for drawing will go here
}
} //在Java中,所有的绘图都必须通过Graphics对象。
包含一个可以用于绘图的表面; 本身也是一个容器——可以放置按钮、滑板等用户界面组件。
为使其更具有实际应用价值,应该通过继承创建一个新类
覆盖或添加一些方法,来获得所需的附加功能。
尤其是,为了能够在面板上进行绘图,需要:
定义一个扩展于JPanel的类;
在这个类中,覆盖paintComponent方法。//参数为Graphics类型
在默认情况下,框架的大 小为0×0像素
10
在包含多个框架的程序中,不能因为用户关闭了其中 的一个框架就让程序退出。
在默认情况下,用户关闭窗口时只是将框架隐藏起来, 而程序并没有最终。 退出main方法并没有终止程序,终止的只是主线程。 显示的框架激活了用户界面线程。 框架的标题栏和外框装饰都是由操作系统绘制的,而 不是Swing库;Swing库负责绘制框架内的所有内容。
{ Graphics2D g2 =(Graphics2D)g; //需进行类型转换
…
}
22
Java 2D库包含描述直线、矩形、椭圆的类:
Lines2D
Rectangle2D
Ellipse2D
全部都实现了Shape接口
要想绘制图形,首先要创建一个实现了Shape接口的类的对象, 然后调用Graphics2D类中的draw方法:
不同的系统对框架的装饰不一样
11
12
JFrame和Jpanel 的继承层次
所有GUI对象的祖先
Frame类的超类
13
框架定位
JFrame类本身只包含若干改变框架外观的方法。 然而,通过继承从JFrame的各个超类中继承了许多 用于处理框架大小和位置的方法:
dispose() 方法:关闭窗口,并回收创建窗口所使用的全部 资源; setIconImage()方法:用于将窗口极小化时的图标设置为 Image对象;
当编写一个包含图形界面的程序时,首先要完成下面 的基本步骤:
建立一个框架frame
建立一个面板panel
在面板中覆盖paintComponent()方法
8
创建框架
在Java中,顶层窗口被称为框架:
不包含在其他窗口中
在AWT库中为Frame类,在Swing中为JFrame类,它扩展于 Frame类.
定义了用户关闭框架时的 响应动作,对于这个程序, 只是让程序退出。
SimpleFrame frame = new SimpleFrame(); //不自动显示,可在显示前添加组件
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); //显示框架 } } class SimpleFrame extends JFrame { public SimpleFrame() { setSize (DEFAOLT-WIDTH, DEFAOLT-HEIGHT); public static final int DEFAOLT-WIDTH=300; public static final int DEFAOLT-HEIGHT=200; } }
}
public static final int MESSAGE_X = 75; public static final int MESSAGE_Y = 100;