第15章爱好选择——图形用户界面.ppt
《第15章爱好选择——图形用户界面.ppt》由会员分享,可在线阅读,更多相关《第15章爱好选择——图形用户界面.ppt(52页珍藏版)》请在三一文库上搜索。
1、第15章 爱好选择 图形用户界面,能力目标: 了解图形用户界面包java.awt和javax.swing及其组件。 学会使用窗框、对话框、面板等容器,以及标签、按钮、文本框、单选按钮和复选框等组件。 能编写关于兴趣爱好选择的图形界面程序。,内容介绍,15.1 任务预览 15.2 图形用户界面及其组件 15.3 容器 15.4 常用组件 15.5 本章小结 15.6 实训15:兴趣爱好选择程序,15.1 任务预览,本章实训程序运行结果:,AWT组件与SWING组件概述,Java早期进行用户界面设计时,使用Java.awt包中提供的类,比如Button(按钮)、TextField(文本框)等组件类
2、,“awt”就是Abstrac Window Toolkit(抽象窗口工具包)的缩写。Java 2(JDK1.2)推出之后,增加了一个新的javax.swing包,该包提供了功能更为强大的用来设计GUI界面的类。 Java早期的java.awt包中的类创建的组件习惯上称作重组件,例如,当用java.awt包中的Button类创建一个按钮组件时,都有一个相应的本地组件在为它工作(称为它的同位体或对等体)。,AWT组件与SWING组件概述,AWT组件的设计原理是把与显示组件有关的许多工作和处理组件事件的工作交给相应的本地组件。因此我们把有同位体的组件称为重量组件,基于重量组件的GUI设计有很多不足
3、之处,比如我们的程序的外观在不同的平台上可能有所不同,而且重量组件的类型也不能满足GUI设计的需要,例如,不可能把一副图象添加到AWT按钮上或AWT标签上,因为AWT按钮或标签外观绘制是由本地的对等组件,即同位体来完成的,而同位体可能是用C+编写的,它的行为是不能被Java扩展的。另外,使用AWT进行GUI设计可能会消耗大量的系统资源。,AWT组件与SWING组件概述,javax.swing包为我们提供了更加丰富的、功能强大的组件,称为swing组件,其中大部分组件是轻量组件,没有同位体。swing组件的轻组件在设计上和AWT完全不同,轻组件把与显示组件有关的许多工和处理组件事件的工作交给相应
4、的UI代表来完成,这些UI代表是用Java语言编写的类,这些类被增加到Java的运行环境中,因此组件的外观不依赖平台,不仅在不同平台上的外观是相同的,而且较重量组件而言有更高的性能。,创建框架JFrame窗体,在Java中,顶层窗口被称为框架( Frame ) javax.swing包中的JFrame类是java.awt包中Frame类的子类。因此JFrame类其子类创建的对象是窗体。 JFrame类常用方法如下: JFrame() 创建一个无标题的窗口。 JFrame(String s) 创建一个标题为s的窗口。 public void setBounds(int a,int b,int w
5、idth,int height) 设置出现在屏幕上时的初始位置为(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。 public void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。 public void setVisible(boolean b) 设置窗口是可见还是不可见,窗口默认是不可见的。,import java.awt.*; import javax.swing.*; public class SimpleFrameTest public static void mai
6、n(String args) EventQueue.invokeLater(new Runnable()/事件调度线程中的执行代码 public void run() SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); ); class SimpleFrame extends JFrame public SimpleFrame() setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); pu
7、blic static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; ,运行结果如下:,框架定位,15.2 图形用户界面及其组件,JDK1.0版图形界面包只有java.awt(简称AWT)。 AWT表示“抽象窗口工具包”(Abstract Window Toolkit) 由于要依靠本地计算机平台实现组件功能,因此AWT包的组件是“重量级”的。 组件分: 容器:容纳组件(含容器)的组件,Frame和Panel等。 基本组件:Label、Button、TextField(文本框)等,,15.
8、2.1 java.awt包与重量级组件,组件根类Component,容器根类Container。 容器一般具有布局管理器(对应LayoutManager接口),组件位置通过布局(Layout)进行管理。 Java把由Container的子类或间接子类创建的对象称为一个容器 Java把由Component类的子类或间接子类创建的对象称为一个组件 Java中,框架被设计为放置组件的容器 注:Container类继承Component类,即容器也是组件。 在组件中绘制信息,并将这个组件添加到框架中 Container类提供了一个public方法:add( ),一个容器可以调用这个方法将组件添加到该容
9、器中。,【例15-1】使用AWT包的组件编程,在文本框中输入姓名,按下按钮,在文本区中显示问候语。,import java.awt.*; import java.awt.event.*; class MyFrame1 extends Frame /定义Frame子类 Label labelName = new Label(“请输入您的姓名:“); TextField fieldName = new TextField(10); Button buttonPress = new Button(“按下“); TextArea areaShow = new TextArea(1, 30); Pane
10、l pan = new Panel(); public MyFrame1() this.setTitle(“自定义的Frame子窗框“); this.setBounds(100, 200, 250, 140); /窗框位置和大小 initialize(); this.setVisible(true); ,public void initialize() pan.add(labelName); pan.add(fieldName); pan.add(buttonPress); pan.add(areaShow); this.add(pan); buttonPress.addActionListe
11、ner(new ActionListener() public void actionPerformed(ActionEvent e) areaShow.setText(fieldName.getText() + “,您好!“); ); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); ,public class Example1 /主类 public static void main(String args) new MyFrame1()
12、; ,15.2.2 javax.swing包与轻量级组件,JDK1.2版增加了javax.swing(简称Swing)包。 Swing包组件用Java语言编写,是“轻量级”的。 Swing包中部分类以J开头命名。如:JLabel、JButton、JTextField、JPanel、JFrame和JApplet等。 【例15-2】使用Swing包的组件编写候程序。 import javax.swing.*; import java.awt.event.*; class MyFrame2 extends JFrame /定义JFrame子类 JLabel labelName = new JLabe
13、l(“请输入您的姓名:“); JTextField fieldName = new JTextField(10);,JButton buttonPress = new JButton(“按下“); JPanel pan = new JPanel(); public MyFrame2() this.setTitle(“自定义的JFrame子窗框“); this.setBounds(100, 200, 250, 140); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initialize(); this.setVisible(true)
14、; public void initialize() pan.add(labelName); pan.add(fieldName); pan.add(buttonPress); this.add(pan);,buttonPress.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, fieldName.getText()+“,您好!“); /使用消息框 ); public class Example2 /主类 p
15、ublic static void main(String args) new MyFrame2(); ,组件根类Component的方法能被所有组件继承和调用。 常用方法: (1)void setBounds(int x, int y, int width, int height) (2)void setLocation(int x, int y) (3)int getX() (4)int getY() (5)void setSize(int width, int height) (6)int getWidth() (7)int getHeight() (8)void setBackgrou
16、nd(Color bg) (9)Color getBackground() (10)void setForeground(Color fg) (11)Color getForeground() (12)void setFont(Font font) (13)Font getFont() (14)void setVisible(boolean b) (15)boolean isVisible(),(16)void setEnabled(boolean b) (17)boolean isEnabled() (18)void setCursor(Cursor cursor):设置组件的光标图像。 (
17、19)Cursor getCursor() (20)boolean requestFocusInWindow() (21)void requestFocus() (22)void add(PopupMenu popup):向组件添加弹出菜单。 (23)void addKeyListener(KeyListener listener) (24)void addMouseListener(MouseListener listener) (25)void addMouseMotionListener(MouseMotionListener listener) (26)void addMouseWhe
18、elListener(MouseWheelListener listener) 类如果有setXxx格式方法,通常也有对应的getXxx方法。 如果setXxx方法的参数类型是boolean型,则对应的方法一般是返回boolean类型的isXxx方法。,15.3 容器,使用较多的容器类是JFrame、JApplet、JDialog和JPanel。 容器根类Container常用方法(适用所有容器): (1)Component add(Component comp) (2)void add(Component comp, Object constraints):按给定的约束(条件)将定组件添加到
19、容器。 (3)void remove(Component comp) (4)void paint(Graphics g) (5)void setLayout(LayoutManager mgr) (6)LayoutManager getLayout(),15.3.1 Container容器类,15.3.2 JFrame窗框,JFrame容器独立存在,并且具有边框、标题和菜单,属于底层容器。 常用方法: (1)JFrame():构造无标题的窗框。 (2)JFrame(String title) (3)Container getContentPane():获取窗框的内容窗格。 注意:JDK1.6版
20、组件可直接添加到JFrame容器上。 (4)void repaint(long time, int x, int y, int width, int height) (5)void setDefaultCloseOperation(int operation) 参数是整型的静态常量字段,选下面4项之一: HIDE_ON_CLOSE DO_NOTHING_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE:退出、结束整个应用程序 (6)void setIconImage(Image image) (7)void setJMenuBar(JMenuBar menubar
21、) (8)void setLayout(LayoutManager manager),从Frame 继承而来的常用方法: (9)void setTitle(String title) (10)void setExtendedState(int state):设置窗框的状态。 参数是Frame类定义的整型静态常量字段: NORMAL:正常状态。 ICONIFIED:将窗口图标化(最小化)。 MAXIMIZED_HORIZ:水平方向最大化。 MAXIMIZED_VERT:垂直方向最大化。 MAXIMIZED_BOTH:水平和垂直方向均最大化。 例如,窗框扩大到整个屏幕语句: frame.setEx
22、tendedState(Frame.MAXIMIZED_BOTH); (11)void setResizable(boolean resizable) (12)boolean isResizable(),JFrame也从Window继承方法,常用的有: (13)void dispose():撤销、关闭窗框,释放资源。 (14)void pack():按组件大小和布局重新调整窗口大小。,15.3.3 JDialog对话框,不单独使用,依附别的容器(例如JFrame)。 对话框分为模式(modal)和非模式两种。 JDialog常用构造方法有: (1)JDialog(Frame owner):构造
23、指定所有者的非模式对话框。 (2)JDialog(Frame owner, boolean modal) (3)JDialog(Frame owner, String title) (4)JDialog(Frame owner, String title, boolean modal) 由于JFrame继承Frame,故上面4个构造方法的owner可以是JFrame窗框。 模式参数modal为true表示构造有模式的对话框。,JDK1.5版调用setModal(boolean modal) 方法设置对话框是否有模式,调用isModal()方法判断是否有模式。 JDK1.6版Dialog类新增两
24、个方法(旧的过时了): (1)void setModalityType(Dialog.ModalityType type) (2)Dialog.ModalityType getModalityType() 对话框模式类型取自下面4个枚举常量: MODELESS:无模式 APPLICATION_MODAL:应用程序模式(默认) DOCUMENT_MODAL TOOLKIT_MODAL 这4个常量在Dialog类嵌套枚举类型ModalityType定义, 使用形式如:Dialog.ModalityType.MODELESS。 注:对话框除JDialog(继承Dialog)类外,还有JFileCho
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 爱好 选择 图形 用户界面
链接地址:https://www.31doc.com/p-3421215.html