Java第9章(GUI-1)
Java语言程序设计教程第九章
Java中的容器分为顶层容器、中间容器和特殊 容器三大类。其中,顶层容器是GUI的基础, 其它所有的组件都是直接或间接显示在顶层容 器中的。在Swing中有三种顶层容器,分别是 JFrame(框架窗口,即通常的窗口)、 JDialog(对话框)、JApplet(用于设计嵌入 在网页中的Java小程序)。 中间容器是可以 包含其它相应组件的容器,但是中间容器不能 单独存在,必须依附于顶层容器。Java常见的 中间容器有JPanel、JPanel、JScrollPane等 。还有一些特殊容器如JLayeredPane、 JRootPane 、JInternalFrame等。本书只列举 三个常用容器JFrame、JDialog和JPanel。
9.3 容器、组件和布局
在学习GUI的编程的时候,必须很好的掌握和理解容 器类(Container)和组件类(Component)。Component 类及其子类的对象用来描述以图形化的方式显示在屏 幕上并能够与用户进行交互的GUI元素。Container类 是用来组织界面上的组件或者单元。有两种常用的 Container(容器),一种是Window,Window对象表示 自由停靠的顶级窗口,另一个是Panel对象,可作为 容纳其他Component对象,但不能够独立存在,必须 被添加到其他Container中,比如说Window或者 Applet中。需要注意的是,Container是 ponent的子类,java.swing中的 JComponent类是java.awt中Container类的一个直接 子类,是java.awt中Component类的间接子类。Swing 中容器和组件的关系如图9.2所示。
1.JFrame Java中所提供的JFrame类的实例就是一个顶层容 器,是构造GUI的基础,其他的组件必须添加到顶层 容器中,以便和操作系统进行信息交互。JFrame的 常用方法见表9.1。
Java第九章PPT教学课件
super(“我的菜单窗口”); setSize(300, 200); } public void init() { MenuBar myB = new MenuBar(); setMenuBar(myB); Menu m1 = new Menu(“文件”); m1.add(new MenuItem(“打开”)); MenuItem m11 = new MenuItem(“保存”); m11.setEnabled(false); m1.add(m11); m1.addSeparator(); m1.add(“退出”); m1.addActionListener(this); myB.add(m1);
Menu m3 = new Menu(“帮助”); m3.add(“关于”); m3.addActionListener(this);
myB.setHelpMenu(m3);
text = new TextField();
add(“South”, text);
2020/1}2/10
6
使用菜单组件的例子
2020/12/10
2
//(c)通过Action对象新建“New”菜单项,并添加事件监听器。 newItem = (new ShowAction("New")); //(c)通过指定菜单项对象新建“Paste”菜单项。 pasteItem = new JMenuItem("Paste", 'P'); //(d)将菜单项加入到子菜单或菜单中,将子菜单加入到菜单中,将菜单加 入到菜单栏中。 (newItem); editMenu.add(pasteItem); viewMenu.add(optionMenu); menuBar.add(); menuBar.add(editMenu); menuBar.add(viewMenu);
Java语言程序设计课程设计实训项目——应用Java Swing GUI组件技术实现课程选课系统GUI窗口(第1部分)
杨教授工作室,版权所有,盗版必究, 1/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
(2)重复添加 5 个 JButton 组件
杨教授工作室,版权所有,盗版必究, 2/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
oneStudentManage.systemRegister(); } 6、测试主窗口内的“退出系统”按钮的正确性
点击“退出系统”按钮后,将关闭主窗口,同时退出本系统程序。 1.1.2 课程选课系统注册窗口的 UI 实现 1、打开 Form 设计器
(1)设置包名称为 com.px1987.course.ui,类名称为 StudentRegisterWindow,并选择 JFrame 模板
杨教授工作室,版权所有,盗版必究, 7/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
(2)点击“Finish”完成按钮,最后将产生出下面的窗口类及代码
2、设置窗口的主要属性 (1)设置窗口的标题文字为:蓝梦选课系统注册窗口。
杨教授工作室,版权所有,盗版必究, 8/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 13/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
(3)改变按钮的对象名称为 loginNameButton (4)为该确认按钮添加鼠标点击事件
杨教授工作室,版权所有,盗版必究, 14/19 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
private void cancelLoginButtonActionPerformed(java.awt.event.ActionEvent evt) {
T12_JavaGUI1
Hands-On实训教程系列
图形编程的一般设计模式 顶层容器 中间级容器 组件
基本GUI组件 复杂GUI组件
顶层容器
中间级容器
GUI组件 其他容器
关系
GUI组件 GUI组件
添加
顶层容器 中间级容器
添加
添加
顶层容器
Hands-On实训教程系列
GUI基本案例1(组件-窗体)
public class MyFrame extends JFrame { //组件 private JLabel userNameLabel; private JLabel pwdLabel; private JTextField userNameTextField; private JPasswordField pwdPasswordField; private JButton confirmButton; private JButton cancelButton; //构造方法,把组件都构造出来 public MyFrame() { initComponents();//容器组合 } //窗体初始化 private void initComponents(){ userNameLabel = new JLabel("用户名:"); pwdLabel = new JLabel("密 码:"); userNameTextField = new JTextField(); pwdPasswordField = new JPasswordField(); confirmButton = new JButton("确定"); cancelButton = new JButton("取消"); this.setLayout(new GridLayout(3,2)); this.add(userNameLabel);//添加到窗体 this.add(userNameTextField); this.add(pwdLabel); this.add(pwdPasswordField); this.add(confirmButton); this.add(cancelButton); } }
JAVA学习第9章建立JavaGUI.ppt
ng.object
MenuBar MenuItem
Menu CheckboxMenuItem
Applet
Button Canvas Container Label List TextComponent
Panel Window ScrollPane
Dialog Frame
TextArea TextField
Window: 其对象表示自由停泊的顶级窗口 Panel: 其对象可作为容纳其它Component对象,但不能独立存在,必须被添加到其它 Containner中(如Window 或 Applet)
Page 8
框架
框架有以下特性:
它们是 Window 的子类 具有标题和重调大小的角 最初是看不见的,使用 setVisible(true) 可以显示框架 具有如缺省布局管理器一样的 BorderLayout 使用 setLayout() 方法更改缺省布局管理器
Frame的常用构造方法:
Frame() Frame(String s) 创建标题栏为字符串s的窗口。
窗口也是一个容器,可以向窗 口添加组件。需要注意的是, 窗口默认地被系统添加到显示 器屏幕上,因此,不允许将一 个窗口添加到另一个容器中。
setBounds(int x,int y,int width,int height) 设置窗体位置和大小,x,y是左上角坐标, widht和height是宽度和高度 setSize(int width,int height) 设置窗体的位置,x,y是左上角坐标 setLocation(int x,int y) 设置窗体的大小,widht和height分别是宽度和高度。 setBackground(Color c) 设置背景颜色,参数为Color对象。 setVisible(boolean b)设置是否可见。 setTitle(String name) String getTitle() setResizable(boolean b)设置是否可以调整大小。
java教材源代码第9章 GUI图形用户界面
第9章GUI图形用户界面【例9-1】使用JFrame创建的框架窗口。
//JFrame_Exam.java 使用JFrame创建的框架窗口import java.awt.*; //加载java.awt类库里的所有类import javax.swing.*; //加载javax.swing类库里的所有类public class JFrame_Exam extends JFrame {public static void main(String args[]) {JFrame_Exam mainJFrame = new JFrame_Exam();mainJFrame.setTitle("JFrame框架示例!"); //创建一个JFrame并设置标题mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); //设置关闭动作 mainJFrame.setSize(300,300); //设置JFrame的大小,缺省为(0,0) mainJFrame.setLocationRelativeTo(null); //使窗口显示在屏幕中央mainJFrame.getContentPane().setLayout(new FlowLayout());//设置JFrame的内容面板背景,缺省为绿色mainJFrame.getContentPane().setBackground(Color.green);JLabel lbl=new JLabel("大家好!我是一个标签");JButton btn=new JButton("按钮");mainJFrame.getContentPane().add(lbl); //将标签对象lbl加入到内容面板中mainJFrame.getContentPane().add(btn); //将按钮对象btn加入到内容面板中mainJFrame.setVisible(true); //设置JFrame为可见,缺省为不可见}}【例9-2】在框架窗口中加入JPanel面板。
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);创建一个使用指 定布局管理器的面板。
9、Java GUI
两种主要类型的容器是:窗口和面板 窗口是一个在显示屏上自由移动的窗口。 组件 面板是 GUI 组件的一个容器,它必须在某些其他容器 的环境中存在,如窗口或 Applet。 使用add() 方法添加组件。 Java 编程语言支持各种组件,如: Button Choice Label List Scrollbar TextComponent 等。 容器中组件的位置和大小是由布局管理器决定的。 必须对组件使用 setLocation()、setSize()或 setBounds() 以在容器中找到它们。
创建框架的示例:
import java.awt.*; public class FrameExample { 声明框架容器对象 private Frame f; public FrameExample() { 初始化框架对象 f = new Frame("Hello Out There!"); } public void launchFrame() { f.setSize(170,170); 设置框架的大小 f.setBackground(Color.blue); f.setVisible(true); 使框架可见 } public static void main(String args[]) { FrameExample guiWindow = new FrameExample(); unchFrame(); } }
第9讲
GUI
9.1 图形用户界面设计概述
9.1.1 GUI概述 1、java.awt包 Java语言在java.awt包中提供了大量地进行GUI 设计所使用的类和接口,包括绘制图形、设置字体 和颜色、控制组件、处理事件等内容,AWT是Java 语言进行GUI程序设计的基础。 2、javax.swing包 Swing 包 是 Java 基 础 类 库 ( Java Foundation Classes,JFC)的一部分。Swing提供了从按钮到可 分拆面板和表格的所有组件。
9GUI
AWT结构图
Component ……
Button TextArea TextField
Container
Label
Choice
Window Frame Dialog
Panel Applet
Componet & Container
Java 的 图 形 用 户 界 面 的 最 基 本 组 成 部 分 是 Component, Component类及其子类的对象用 来描述以图形化的方式显示在屏幕上并能与用 户进行交互的GUI元素,例如,一个按钮,一个 标签等。 一般的Component对象不能独立地显示出来, 必须将它放在某一个Container对象中才可以显 示出来。
Componet & Container
Container是Component子类,Container子类对象可以 容纳别的Component对象。 Container 对 象 可使用 add(…) 方法向其中添加其他的 Component对象。 Container是Component的子类,因此Cotainer对象也 可以被当作Component对象添加到其他Container对象 中。 有两种常用的Container: Window:其对象表示可以自由停泊的顶级窗口。 Panel:其对象可容纳其它Component对象,但不能 独 立 存 在 , 必 须 被 添 加 到 其 它 Container 中 ( 如 Window或Applet)。
窗口事件(WindowEvent)
Window事件所对应的事件类为WindowEvent,所对应 的事件监听接口为WindowListener。 WindowListener定义的方法有: public void windowOpened(WindowEvent e) public void windowClosing(WindowEvent e) public void windowClosed(WindowEvent e) public void windowIconified(WindowEvent e) public void windowDeiconfied(WindowEvent e) public void windowActivated(WindowEvent e) publห้องสมุดไป่ตู้c void windowDeactived(WindowEvent e) 与WindowListener对应的适配器为WindowAdapter 例:TestWindowClose.java
面向对象的程序设计-Java张白一第三版第9章
第9章 文字与图形GUI设计
图9.1 AWT组件与Swing组件间的继承关系
第9章 文字与图形GUI设计
9.1.2 图形用户界面元素分类 Java中构成图形用户界面的各种元素和成分可以粗略地 分为三类:容器、控制组件和用户自定义成分。下面给予简 略的说明。 1.容器 容器是用来组织或容纳其他界面成分和元素的组件。一 个容器可以包含许多组件,同时它本身也可以作为一个组件, 放进另一容器中。我们可以用容器简化图形化界面的设计, 以整体结构来布置界面。一个应用程序的图形用户界面首先 对应于一个复杂的容器,例如一个窗口。这个容器内部将包 含许多界面成分和元素,其中某些界面元素本身也可能又是 一个容器,这个容器再进一步包含它的界面成分和元素,依 此类推就构成一个复杂整体图形界面。
第9章 文字与图形GUI设计
2.控制组件
与容器不同,控制组件是图形用户界面的最小单位之一, 它里面不再包含其他的成分。控制组件的作用是完成与用户 的一次交互,包括接收用户的一个命令(如菜单命令),接收 用户输入的一个文本或选择,向用户显示一段文本或一个图 形,等等。 从某种程度上来说,控制组件是图形用户界面标准化的 结果,目前常用的控制组件有选择类的单选按钮、复选按钮、 下拉列表,有文字处理类的文本框、文本区域,有命令类的 按钮、菜单等。Swing控制组件的层次结构如图9.2所示。
第9章 文字与图形GUI设计
如图9.1所示。ponent抽象类是许多容器类
的父类,Component抽象类中封装了容器通用的方法和属性, 如图形的容器对象、大小、显示位置、前景色和背景色、边 界、可见性等。java.awt.Container容器类是Component抽象 类的子类,是所有其他容器的父类,它具有组件的所有性质, 它的主要功能是容纳其他的控制组件和容器。
《Java语言GUI程序设计》读书笔记模板
第4章 Java面向对象程序设计
4.1类的方法 4.2类封装与访问控制 4.3类的继承 4.4多态性 4.5接口 4.6 Java的内部类 4.7 Lambda表达式初步 习题
第5章 Java GUI事件处理设计
5.1 Java GUI事件处理模型 5.2事件处理的设计 5.3常用事件监听器 5.4 Java Bean构件设计初步 5.5 Swing组件的属性绑定 习题
第12章多线程并发与SwingWorker
12.1 Java线程的创建 12.2线程的生命周期及属性 12.3多线程的同步控制 12.4 Java多线程并发程序设计一瞥 12.5 SwingWorker类与GUI程序的任务线程 习题
精彩摘录
精彩摘录
这是《Java语言GUI程序设计》的读书笔记模板,可以替换为自己的精彩内容摘录。
01
第8章 Swing GUI布局管 理器及容器 的使用
02
第9章 Java数据 库程序设计 基础
03
第10章 Swing控件 的使用
04
第11章 Swing菜单 设计及对话 框使用
06
附录CD
05
第12章多 线程并发与 SwingWor ker
第1章 Java语言GUI程序设计概述
1.1程序设计与程序设计语言概述 1.2 Java程序设计语言概述 1.3 GUI程序简述 1.4开发环境 习题
第6章数据集存储与处理类
6.1数组 6.2字符串 6.3泛型与枚举 6.4集合类 6.5流及其数据集操作 习题
第7章异常处理和文件操作及I/O
7.1异常处理 7.2文件与文件选择器 7.3输入输出流 7.4字节数据的读写 7.5文本输入输出流 7.6通道式输入输出 习题
java9
匿名类法可说是类继承法的扩展,其 主要目的是解决某些“变量存取”的 问题,基本上说匿名类法非常好用, 也不复杂
22
import javax.swing.*;
匿名类法
import java.awt.*;
import java.awt.event.*;
public class DrawLine2 extends Japplet
采用定义接口法的步骤
引入系统事件类包,如import java.awt.event.*; 在定义类的同时声明实现动作事件监听器接口,如
implements ActionListener。 在方法中调用事件源对象的addActionListener,注
册事件源对象的事件监听者,如 btn.addActionListener(this)。 实现actionPerformed方法,这个方法是接口中的方 法,应该实现这个方法,加入代码以响应事件的发 生。如单击按钮时,系统将产生ActionEvent事件, 动作事件监听者就调用actionPerformed方法处理这个 事件。
处
对象为监听器(listener)。一个对象要
成为监听器,必须由源对象注册为监听器。
理
– 事件处理方法也称为处理器(handler)。
源对象和监听器对象可以是同一个对象。
一个源对象可以有许多监听器,它拥有一
个所有监听器构成的队列。对象要成为一
个监听器,必须实现标准处理方法
7
例9.2 事件处理的简单例子
Java程序设计教程
第9章 创建用户界面
本章主要内容
图形用户界面的特点 创建图形用户界面的应用程
序或Applet Swing包中的GUI组件 事件处理的方法 布局管理器
Java09(GUI编程)
BorderLayout
委托模型的优缺点
事件处理和产生事件的对象分离,更加灵活, 符合OOP的一个设计准则,分离。 事件处理和时间对象可以有多对多的关系, 可以重用事件处理对象。 程序结构复杂。 由1.0模型向1.1模型转换比较复杂。
Q&A
本章结束 谢谢大家
确定布局管理器
缺省的布局管理器
Window 、Frame、Dialog —— BorderLayout Panel 、Applet —— FlowLayout:
选择布局管理器的方法
建立布局管理器类的对象 利用容器的 setLayout 为容器指定布局(即指定一个布局管理 器的对象)
例:将myFrame布局设定为FlowLayout类型 myFrame.setLayout(new FlowLayout());
JAVA GUI编程简介
通过图形用户界面GUI (graphics user interface ),用户和程序之间可以方便地进行交 互。在Java语言中提供了专门的类库来生成各种标 准图形界面元素和各种处理图形界面的各种事件, 以实现图形用户界面的设计
目前在JAVA中实现图形用户界面主要有两种技术: AWT和Swing
允许用户选择自己喜欢的界面风格提供了多种与用户交互的手段为用户提供高质量的2d图形图像和文本的api支持对象的拖放swing组件全部是由纯java编写的功能强大如按钮和标签可以显示图像或图片组件不一定是长方形swing使用的包
Java就业培训教程第九章 GUI
Java就业培训教程第九章GUI9.1 常用AWT组件在上一章开始的第一个程序中,我们就用到了按钮(Button),这是最简单的组件之一了,在AWT里还有专门多用于GUI设计的组件,我们现在就来了解更多的GUI组件。
如图9.1所示描述了AWT中的组件及类层次关系图。
图9.19.1.1 Component类Java的图形用户界面的最差不多组成部分是组件,组件是一个能够以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮,一个标签等。
抽象类Component是所有Java GUI组件的共同父类。
Compone nt类规定了所有GUI组件的差不多特性,该类中定义的方法实现了作为一个GUI组件所应具备的差不多功能。
Java程序要显示的GUI组件必须是抽象类Component或MenuComponent的子类。
9.1.2 CanvasCanvas代表屏幕上的一块空白的矩形区域,程序能够在那个部件表面绘图,也能够捕捉用户的操作,产生相应的事件,Canvas能够讲是具有最差不多的和最简单的GUI功能的部件。
当我们要设计一种自己定制的具有G UI功能的部件类,我们的那个类就能够继承Canvas,如此,我们的部件类就差不多完成了GUI的差不多功能,我们只需要在那个基础上增加子类部件所专有的外观和功能的有关代码就行了,我们要想绘制子类部件的外观,我们必须覆盖Canvas的paint方法。
我们现在设计一个计时器部件,鼠标在部件上按下时,计时器开始计时,并在部件上显示计时时刻,鼠标开释时,计时器停止计时。
下面是那个计时器的程序代码,其中涉及到的技巧和知识点,都在前面有过讲解,那个地点就不作详细讲明了。
程序清单:TestStopWatch.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import java.text.SimpleDateFormat;class StopWatch extends Canvas implements Runnable{private long startTime = 0;private long endTime = 0;private boolean bStart = false;public StopWatch(){enableEvents(AWTEvent.MOUSE_EVENT_MASK);setSize(80,30);}protected void processMouseEvent(MouseEvent e){if(e.getID() == MouseEvent.MOUSE_PRESSED){bStart = true;startTime = endTime = System.currentTimeMillis();repaint();new Thread(this).start();}else if(e.getID() == MouseEvent.MOUSE_RELEASED){bStart = false;repaint();}super.processMouseEvent(e);}public void paint(Graphics g){SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");Date elapsedTime =null;try{elapsedTime= sdf.parse("00:00:00");}catch(Exception e){}elapsedTime.setTime(endTime - startTime + elapsedTime.getTime());String display = sdf.format(elapsedTime);g.drawRect(0,0,78,28);g.fill3DRect(2,2,75,25,true);g.setColor(Color.RED);g.drawString(display,10,20);}public void run(){while(bStart){try{Thread.sleep(500);}catch(Exception e){e.printStackTrace();}endTime = System.currentTimeMillis();repaint();}}}public class TestStopWatch{public static void main(String [] args){Frame f =new Frame("StopWatch");f.add(new StopWatch());f.setSize(200,200);f.setVisible(true);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}}编译并运行那个程序,你一定要用鼠标按住计时器部件几秒钟,你就能看到我们期望的成效了,如图9.2所示。
Java SE课件:9-1
菜单条、菜单、菜单项
2. JMenu类负责创建菜单,即JMenu的 一个实例就是一个菜单
构造方法JMenu()建立一个空标题的 菜单,JMenu(String s)建立一个标题为s 内容的菜单
public void add(JMenuItem item)方法向 菜单中添加菜单项。
菜单条、菜单、菜单项
}
课堂练习
例子9-2 P225 其中菜单上加图标的方法在P224,大家
自学。图标在课件邮箱里。
例子9-2讲解 前面我们讲的创建窗口的方法是,创建
JFrame类的对象。然后,该对象就是一 个容器,可以向它添加组件。
课堂练习
例子9-2讲解 我们也可以新建立一个类它继承JFrame
,如此,这个类就是一个窗口,即创建 该对象就可以创建一个窗口程序。而, 我们向窗口中添加组件的工作就可以在 该类中完成。
JFrame类中有几个方法: public void setSize(int width, int height)
位置显示宽为width,高为height的窗口, 默认起始位置是坐标(0,0)
public void setVisible(boolean b)设置窗 口是可见或不可见的,默认是不可见的
的GUI程序中,经常先创建多个面板, 将面板在窗口中做位置安排,然后组件 添加到面板中,在面板中做位置安排。
JScrollPane创建滚动窗格,把组件添加 到滚动窗格中,可以为组件设置滚动条 。
JSplitPane创建拆分窗格(使用较复杂 ,不在课堂讲述)
9.3 布局
当将组件添加到容器中时,希望控制组件 在容器中的位置,则需要布局类来实现。
1. 创建菜单项对象 2. 创建菜单对象,将需要的菜单项添加
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序9.1 HelloSwing.java
2. 继承JFrame类
程序9.1的方法在创建比较简单的窗口时还可以,如果窗 口比较复杂,就会使得main()方法的内容过多。 一般应该先创建一个继承JFrame类的子类,然后编写程序 创建该类对象。 改进的程序见下页:
程序9.2 HelloSwing1.java
9.1.2
简单的框架窗口
import javax.swing.*; public class HelloSwing { public static void main(String args[]){ JFrame frame = new JFrame("Hello Swing"); frame.setSize(400,240); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
JComponent 轻量组件类 Graphics Color 图形类 颜色类
Font
JApplet JFrame JDialog
字体类
小程序类 框架窗口类 对话框类
在使用绘图对象绘制字符串时可以指定字体,其中包括字体、字 型和大小
Applet 类 的 子 类 , 创 建 基 于 Swing 的 Java 小 应 用 程 序 需 要 继 承 JApplet类 顶级窗口。在Java图形应用程序中,它是包含其他Swing组件的最 外层容器 弹出式对话框,一般用来接收用户的输入和显示有关信息
9.1 Java 图形界面基础
2、组件分类
JMenuItem AbstractButton JButton JToggleButton JTextArea JComponent JTextComponent JEditorPane JTextField JPanel JLabel JList JCheckBoxMenuItem JMenu JRadioButtonMenuItem JRadioButton
9.1 Java 图形界面基础
4. Container类及其方法 Container类中的常用方法: public Component add(Component comp) public Component add(Component comp, int index) 向容器中添加组件,index参数指定组件添加到容器中的 位置,无index参数则添加到默认位置。 public void remove(Component comp) 从容器中清除指定 的组件。
9.1.3
在框架中添加组件
若向顶层容器(JFrame、JApplet、JDialog)中添加组件,可 以使用容器的add()方法实现。
import java.awt.*; import javax.swing.*; public class SimpleFrame extends JFrame{ JButton jButton1,jButton2; public SimpleFrame(String title){ super(title); jButton1 = new JButton("OK"); jButton2 = new JButton("Cancel"); setLayout(new FlowLayout()); add(jButton1); add(jButton2); setSize(400,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args){ JFrame frame = new SimpleFrame("Frame With Button"); } }
9.1 Java 图形界面基础
2、组件分类 容器组件:容器组件分为三类:① 顶层容器:包括JFrame、 JApplet、JDialog;② 通用容器:包括JPanel、 JScrollPane、JSplitPane、JTabbedPane、JToolBar;③ 专用容器:包括JInternalFrame、JLayeredPane、 JRootPane等。 基本组件:基本组件包括JButton、JTextField、 JComboBox、JList、JMenu、JSlider。这些组件有的主要 用于信息的显示,如JLabel、JProgressBar、JToolTip等, 有的用来编辑输入信息,如JTextArea、JtextField、 JFileChooser、JColorChooser、JTable、JTree等。 菜单组件:菜单组件包括JMenuBar、JMenu、JMenuItem、 JRadioButtonMenuItem、JCheckBoxMenuItem和JPopupMenu 等。这些组件主要用于构建各种菜单。
类名 Component Container
构建图形用户界面常用的类
含义 组件类 容器类 所有图形用户界面类的超类 Component类的一个子类,是一种可以容纳其他组件和容器的组 件 所 有 轻 量 组 件 类 的 超 类 , 它 的 子 类 都 在 javax.swing 包 中 , 如 JButton、JLabel、JMenu、JRadioButton、JList、JTextField、 JTextArea、JscrollPane等 抽象类,提供了在容器中绘制字符串和简单图形的图形环境 这 个 类 用 来 处 理 图 形 和 组 件 的 颜 色 。 例 如 , 可 以 为 JFrame 、 JPanel等组件指定背景色和前景色,也可以指定绘制的线条、 图形和字符串的颜色 说明
9.1 Java 图形界面基础
public void setForeground(Color c) public Color getForeground() public void setFont(Font f) 设置组件上使用的字体, Font为字体类。 public Font getFont() public Graphics getGraphics() 返回组件的图形上下文 (graphics context)或绘图对象,Graphics为图形上下文类, 使用该类对象可以在组件上绘制图形。 public void setToolTipText(String text) 设置组件上的 提示信息。 public String getToolTipText()
import javax.swing.*; public class HelloSwing1 extends JFrame{ public HelloSwing1(){ this(" HelloSwing "); } public HelloSwing1(String title){ super(title); setSize(400,250); setLocation(350,250); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]){ HelloSwing1 frame = new HelloSwing1(); } }
AWTEvent Panel Applet JApplet
Color
Object Component
FontMetrics
Container
Window
Frame Dialog
JFrame JDialog
Graphics Font JComponent
图9.1 Java GUI所用类的层次结构图
表9-1
9.1 Java 图形界面基础
二、Swing常用组件及分类 1、概述
Java GUI主要的包有java.awt、java.awt.event、javax.swing。 图9.1给出了有关包中常用的类及类的层次结构。该图中Applet类在 java.applet包中,以J开头的类在javax.swing包中,其他类在 java.awt包中。
9.1.2
简单的框架窗口
1. 创建简单的框架窗口 每个Swing GUI的程序必须至少有一个顶层Swing容器。 对于GUI应用程序来说,一般应该有一个主窗口,也称为 框架窗口。在Swing中,框架窗口由JFrame对象实现。 JFrame类常用的构造方法: public JFrame() 创建一个没有标题的窗口对象。 public JFrame(String title) 创建一个以title为标题 的窗口对象。
9.1 Java 图形界面基础
4. Container类及其方法
Container类是所有容器类的超类,在编写GUI程序时经常 要使用这个类的方法。 容器组件的特点是:容器中可以容纳其他组件,通过调用 容器的add()方法把其他组件添加到容器中。 添加到容器中的组件位置和大小由容器的布局管理器决定 (Layout Manager)。
第9章 Java图形界面设计
9.1 9.2 9.3
Java 图形界面基础 容器布局 绘制图形
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的事件模型。Biblioteka JToolTip JTree