![爱好选择——图形用户界面.ppt_第1页](http://file1.renrendoc.com/fileroot2/2019-1/16/899045f1-73d0-40be-aa1d-b6f1248c91a9/899045f1-73d0-40be-aa1d-b6f1248c91a91.gif)
![爱好选择——图形用户界面.ppt_第2页](http://file1.renrendoc.com/fileroot2/2019-1/16/899045f1-73d0-40be-aa1d-b6f1248c91a9/899045f1-73d0-40be-aa1d-b6f1248c91a92.gif)
![爱好选择——图形用户界面.ppt_第3页](http://file1.renrendoc.com/fileroot2/2019-1/16/899045f1-73d0-40be-aa1d-b6f1248c91a9/899045f1-73d0-40be-aa1d-b6f1248c91a93.gif)
![爱好选择——图形用户界面.ppt_第4页](http://file1.renrendoc.com/fileroot2/2019-1/16/899045f1-73d0-40be-aa1d-b6f1248c91a9/899045f1-73d0-40be-aa1d-b6f1248c91a94.gif)
![爱好选择——图形用户界面.ppt_第5页](http://file1.renrendoc.com/fileroot2/2019-1/16/899045f1-73d0-40be-aa1d-b6f1248c91a9/899045f1-73d0-40be-aa1d-b6f1248c91a95.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 wi
5、dth,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 main
6、(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); pub
7、lic 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.2
8、.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); Panel pan
10、 = 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.addActionListener(new
11、 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(); ,15.2.2
12、 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 JLabel(请输入您的姓名
13、:); 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); public void i
14、nitialize() 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 /主类 public static void
15、 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 setBackground(Color bg) (9)C
16、olor 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):设置组件的光标图像。 (19)Cursor getCurs
17、or() (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 addMouseWheelListener(MouseW
18、heelListener 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):按给定的约束(条件)将定组件添加到容器。 (3)void remov
19、e(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版组件可直接添加到JFrame容器上
20、。 (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) (8)void setLayo
21、ut(LayoutManager manager),从Frame 继承而来的常用方法: (9)void setTitle(String title) (10)void setExtendedState(int state):设置窗框的状态。 参数是Frame类定义的整型静态常量字段: NORMAL:正常状态。 ICONIFIED:将窗口图标化(最小化)。 MAXIMIZED_HORIZ:水平方向最大化。 MAXIMIZED_VERT:垂直方向最大化。 MAXIMIZED_BOTH:水平和垂直方向均最大化。 例如,窗框扩大到整个屏幕语句: frame.setExtendedState(Frame
22、.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):构造指定所有者的非模式对话框。 (2)
23、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类新增两个方法(旧的过时了): (1)vo
24、id setModalityType(Dialog.ModalityType type) (2)Dialog.ModalityType getModalityType() 对话框模式类型取自下面4个枚举常量: MODELESS:无模式 APPLICATION_MODAL:应用程序模式(默认) DOCUMENT_MODAL TOOLKIT_MODAL 这4个常量在Dialog类嵌套枚举类型ModalityType定义, 使用形式如:Dialog.ModalityType.MODELESS。 注:对话框除JDialog(继承Dialog)类外,还有JFileChooser、JOptionPane和
25、JColorChooser等。,【例15-3】修改例15-2的问候程序,使用JDialog对话框替换其中的消息框。,class MyFrame3 extends JFrame . public MyFrame3() myFrame = this; public void initialize() buttonPress.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) /构造对话框 JDialog dialog = new JDialog(myFrame, JDialog对话框);
26、 dialog.setModalityType(,Dialog.ModalityType.APPLICATION_MODAL); dialog.setLocation(; dialog.setSize(200, 150); dialog.add(new JLabel(fieldName.getText()+,您好!); dialog.setVisible(true); ); ,15.3.4 JPanel面板,面板是无边框无标题的容器,不能单独存在, 面板属于中间(层)容器。 JPanel常用的构造方法有: (1)JPanel():构造默认布局为FlowLayout的双缓冲功能面板。 组件的(图
27、像)双缓冲:组件除了屏幕里面的图像显示空间,还有一个位于屏幕外部的图像缓冲区离屏缓冲区。作用:实现屏幕快速、无闪烁地更新,但需要较多内存空间。,(2)JPanel(LayoutManager layout):构造指定布局的面板。 除JPanel外,还有JTabbedPane(选项卡窗格)、JScrollPane(滚动窗格)、JSplitPane(拆分窗格)和JLayeredPane(分层窗格)等中间层容器,,15.4 常用组件,标签用来显示文字或图标(小图片)。 JLabel常用方法: (1)JLabel() (2)JLabel(String text) (3)JLabel(Icon imag
28、e) (4)JLabel(String text, Icon icon, int horizontalAlignment) 图标和文本水平放置,图标在前,文本在后。 (5)void setText(String text) (6)String getText(),15.4.1 JLabel标签与ImageIcon图像图标,(7)void setIcon(Icon icon) (8)Icon getIcon() (9)void setOpaque(boolean isOpaque):设置标签是否不透明。标签默认透明。 (9)void setHorizontalAlignment(int alig
29、nment) (10)void setVerticalAlignment(int alignment),图像图标类ImageIcon,常用构造方法: (1)ImageIcon(String filename):通过图像文件构造一个图标。如: new ImageIcon(“images/myImage.gif”) 图像扩展名为jpg、gif或png等。 (2)ImageIcon(Image image):由图像构造图标,即转图像为图标。 (3)ImageIcon(URL location) 标签可显示图标,如: Icon icon = new ImageIcon(file.jpg); JLabe
30、l lab = new JLabel(标签文本); lab.setIcon(icon); 注:凡能显示文字的组件,一般都有setText和getText方法。 能显示图标的,一般都有setIcon和getIcon方法。,15.4.2 JButton按钮,按钮是进行互动操作使用最多的组件。JButton常用方法: (1)JButton() (2)JButton(Icon icon) (3)JButton(String text) (4)JButton(String text, Icon icon) (5)void setHorizontalTextPosition(int textPositio
31、n):设置文本相对于图标的水平位置。 参数取自SwingConstants接口的静态常量字段LEFT、CENTER或RIGHT等,也可使用JButton作前缀调用,例如JButton.LEFT。默认文本在图标右边。 (6)void addActionListener(ActionListener listener):添加动作事件监听器,以便按钮能响应动作事件。,15.4.3 JTextField文本框与 JPasswordField密码框,JPasswordField回显特殊符号,如*,达到保密目的。 密码框是文本框的子类,文本框是JTextComponent子类。 文本框和密码框都属于文本组
32、件。 文本框和密码框从JTextComponent类继承的常用方法: (1)void setText(String text): (2)String getText():不赞成密码框使用本方法。 (3)void setEditable(boolean b):设置内容能否编辑。参数为false时不能编辑,这时是“只读”的文本框, 相当于一个标签。,文本框JTextFiled常用方法: (1)JTextField() (2)JTextField(int columns):构造指定列数的文本框。 (3)JTextField(String text) (4)JTextField(String text
33、, int columns) 列数是一行显示的字符个数,是水平宽度参考指标。 (5)void setColumns(int columns) (6)void setHorizontalAlignment(int alignment) 密码框JPasswordField常用方法: (1)JPasswordField() (2)JPasswordField(int columns) (3)void setEchoChar(char c):设置密码框回显字符。 (4)char getPassword():获取密码框字符。 出于安全考虑,不要使用已过时的getText()方法获取密码框字符。,【例15
34、-4】编写用户登录程序,在登录窗框中输入姓名和密码,按“提交”按钮后弹出消息框。按“取消”按钮则清空姓名和密码框,并退出程序。,class MyFrame4 extends JFrame private JLabel labelName = new JLabel(姓名:); private JTextField fieldName = new JTextField(); private JLabel labelCipher = new JLabel(密码:); private JPasswordField passField = new JPasswordField(); private Im
35、ageIcon icon1 = new ImageIcon(submit.gif); private ImageIcon icon2 = new ImageIcon(cancel.gif); private JButton buttonSubmit = new JButton(提交, icon1); private JButton buttonCancel = new JButton(取消, icon2); ,public void initialize() labelName.setHorizontalAlignment(JLabel.RIGHT); labelCipher.setHoriz
36、ontalAlignment(JLabel.RIGHT); passField.setEchoChar(*); buttonSubmit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) char cipher = passField.getPassword(); String plaintext = String.valueOf(cipher); JOptionPane.showMessageDialog(null, 您是 + fieldName.getText() + n密码
37、+ plaintext); );,buttonCancel.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) fieldName.setText(null); passField.setText(null); System.exit(0); ); ,15.4.4 JCheckBox复选框,复选框典型的应用是多项选择题。 JCheckBox常用构造方法: (1)JCheckBox() (2)JCheckBox(String text) (3)JCheckBox(String text
38、, boolean selected) JCheckBox和JRadioButton都有两种状态,它们均继承JToggleButton类,JToggleButton又继承AbstractButton类。 JCheckBox从AbstractButton类继承方法,常用的有: (1)void setSelected(boolean b) (2)boolean isSelected() (3)void addActionListener(ActionListener listener) (4)void addItemListener(ItemListener listener),【例15-5】编写
39、使用复选框进行多项兴趣爱好选择的程序。用鼠标单击各个复选框,均会在下面的只读文本框中动态显示选择结果。,class MyFrame5 extends JFrame implements ActionListener private JLabel labelLove = new JLabel(爱好选择:); private JCheckBox boxMusic = new JCheckBox(音乐); private JCheckBox boxSport = new JCheckBox(运动); private JCheckBox boxWeb = new JCheckBox(上网); priv
40、ate JTextField fieldResult = new JTextField(20); private JPanel pan = new JPanel(); public MyFrame5() this.setTitle(关于复选框); this.setBounds(100, 200, 300, 120);,this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initialize(); this.setVisible(true); public void initialize() pan.add(labelLove);pan.ad
41、d(boxMusic); pan.add(boxSport);pan.add(boxWeb); fieldResult.setEditable(false); pan.add(fieldResult); this.add(pan); boxMusic.addActionListener(this); boxSport.addActionListener(this); boxWeb.addActionListener(this); ,public void actionPerformed(ActionEvent e) StringBuffer strBuf = new StringBuffer(
42、您选择了:); if (boxMusic.isSelected() strBuf.append(boxMusic.getText() + ); if (boxSport.isSelected() strBuf.append(boxSport.getText() + ); if (boxWeb.isSelected() strBuf.append(boxWeb.getText() + ); fieldResult.setText(strBuf.toString(); ,15.4.5 JRadioButton单选按钮与ButtonGroup按钮组,单选按钮组的典型应用是单项选择题,例如选择题有3个
43、答案,只允许选其中之一,需使用3个单选按钮组成的按钮组。 JRadioButton构造方法的参数形式与JCheckBox相同。 与复选框一样,单选按钮也拥有继承而来的setSelected、isSelected、addActionListener和addItemListener等方法。 按钮组类ButtonGroup常用方法: (1)ButtonGroup():构造按钮组对象(构造方法只有1个)。,(2)void add(AbstractButton b):将按钮添加到组。 (3)void clearSelection():清除按钮组中按钮的选中状态。 (4)int getButtonCount():返回按钮组的按钮个数。 (5)void remove(AbstractButton b):从按钮组中移除按钮。,【例15-6】编写使用单选按钮组进行志向选择的程序,要求每次只选一个志向。,class MyFrame6 extends JFrame implements ActionListener private JLabel labelWillDo = new JLabel(将来要当:); private JRadioButton radioManager=new JRadioButton(经理); private JRadio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《骨质疏松治疗》课件
- 微课程基本模板课件
- 成都大学生情侣创业项目
- 急诊与择期手术治疗门静脉高压症上消化道大出血的比较
- 2025年新型便携式温、湿、风向风速仪项目发展计划
- 农学基础教学模板
- 质控团队季度成果模板
- 重阳节市场营销策划模板
- 医保行业工作规划模板
- 2025年便携式地质雷达项目合作计划书
- 2024年北京市中考数学试卷(含答案解析)
- 河南省2024年中考英语真题【附真题答案】
- 2024公路工程施工安全风险辨识与管控实施指南
- 浙江省嘉兴市2023-2024学年高一上学期1月期末考试政治试题
- 2024年(学习强国)思想政治理论知识考试题库与答案
- 2024时事政治考试题库(基础题)
- 2023版《思想道德与法治》(绪论-第一章)绪论 担当复兴大任 成就时代新人;第一章 领悟人生真谛 把握人生方向 第3讲 创造有意义的人生
- 《不一样的物体作业设计方案-2023-2024学年科学大象版》
- 小学校本课程教材《趣味数学》
- 干细胞疗法推广方案
- (2024年)电工安全培训(新编)课件
评论
0/150
提交评论