Java程序设计教学课件第十章 图形用户界面

上传人:1777****777 文档编号:48292302 上传时间:2022-01-03 格式:PPT 页数:28 大小:517KB
返回 下载 相关 举报
Java程序设计教学课件第十章 图形用户界面_第1页
第1页 / 共28页
Java程序设计教学课件第十章 图形用户界面_第2页
第2页 / 共28页
Java程序设计教学课件第十章 图形用户界面_第3页
第3页 / 共28页
点击查看更多>>
资源描述
第十章 图形用户界面华中科技大学华中科技大学IBM技术中心技术中心华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterContents界面布局界面布局事件处理过程事件处理过程常用的图形组件常用的图形组件Swing和和AWT图形用户界面基本元素图形用户界面基本元素华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形用户界面基本元素图形用户界面基本元素v图形用户界面(图形用户界面(GUI) 可以使程序提供独特的视觉效果 提高软件易用性 使用鼠标和键盘操作 $javahome$/demo/jfc/SwingSet2华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形用户界面基本元素图形用户界面基本元素v常见的图形界面元素 基本组件 文本框、按钮、输入框 单选/多选按钮、下拉框/复选框 容器 可放置基本组件的组件 窗体、面板、框架 所有的组件都必须存在于容器之中 顶层容器Container华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterAWT和和SwingvAWTAbstract Window Toolkit 图形界面是平台相关的图形界面是平台相关的 AWT是重量级的,依赖本地代码实现是重量级的,依赖本地代码实现 不同平台外观有差异不同平台外观有差异vSwing轻量级纯轻量级纯Java的图形库的图形库 基于基于AWT,更丰富,功能更强大,更丰富,功能更强大 不同平台外观一致不同平台外观一致 牺牲了性能牺牲了性能vSWT华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常用的图形组件常用的图形组件vAWT java.awt.* Label、Button、List、TextField Frame、Panel、ContainervSwing javax.swing.* JLabel、JButton、Jlist、JTextField JFrame、JPanelv不要在容器中混合使用不要在容器中混合使用AWT和和Swing组件组件华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常用的图形组件常用的图形组件组件类名描述JLabel不可编辑的文本行(可带图标)JTextField可编辑的文本行JButton按钮JCheckBox复选框JRadioButton单选框JComboBox下拉框JPanel面板JFrame框架v 更多组件可参考javax.swing.*华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形组件测试图形组件测试v import java.awt.*;v import javax.swing.*;v public class GUITest extends JFrame v private JLabel label;v private JButton button;v private JCheckBox checkbox;v private JRadioButton rbutton;v private JTextField textfield;v private JComboBox cbox;v private JList list;华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形组件测试图形组件测试v public GUITest() v super(GUI Test);v Container container = getContentPane();v container.setLayout(new FlowLayout();v label = new JLabel(Im JLabel);v button = new JButton(Im JButton);v rbutton = new JRadioButton(Im JRadioButton);v textfield = new JTextField(10);v textfield.setText(Im JTextField);v checkbox = new JCheckBox(Im JCheckBox);v cbox = new JComboBox();v cbox.addItem(JComboBox item 1);v cbox.addItem(JComboBox item 2);v list = new JList();v String data = JList data 1,JList data 2, JList data 3;v list.setListData(data);华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形组件测试图形组件测试v container.add(label);v container.add(button);v container.add(checkbox);v container.add(rbutton);v container.add(textfield);v container.add(cbox);v container.add(list);v setSize(300,200);v setVisible(true);v v public static void main(String args) v GUITest test = new GUITest();v test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);v v 华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center图形组件测试图形组件测试v运行结果华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center事件驱动事件驱动v图形界面程序是通过事件来驱动的图形界面程序是通过事件来驱动的 当用户对图形组件进行操作时产生事件当用户对图形组件进行操作时产生事件 如鼠标点击按钮、在输入框中输入文字等如鼠标点击按钮、在输入框中输入文字等 事件对象用于记录事件详细内容事件对象用于记录事件详细内容 java.awt.AWTEvent华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center事件处理模型事件处理模型v事件处理模型中的三要素事件处理模型中的三要素 事件源对象事件源对象 即产生事件的图形组件如按钮、文本框等即产生事件的图形组件如按钮、文本框等 事件对象事件对象 记录事件的对象,由系统产生记录事件的对象,由系统产生 事件监听对象事件监听对象捕获并处理事件的对象捕获并处理事件的对象v程序员的工作程序员的工作 将事件监听对象注册到事件源对象将事件监听对象注册到事件源对象 编写处理事件的代码编写处理事件的代码华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常用的事件类常用的事件类vGUI事件类层次结构事件类层次结构java.lang.Objectjava.awt.AWTEventActionEventItemEventAdjustmentEventComponentEventjava.util.EventObjectContainerEventPaintEventFocusEventWindowEventInputEventKeyEventMouseEvent华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常用的事件监听接口常用的事件监听接口v事件监听接口层次结构事件监听接口层次结构java.util.EventListenerActionListenerComponentListenerAdjustmentListenerContainerListenerMouseListenerTextListenerItemListenerFocusListenerKeyListenerMouseMotionListenerWindowListener华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center事件处理示例事件处理示例v import java.awt.*;v import java.awt.event.*;v import javax.swing.*;v public class EventTest extends JFrame v private JButton button;v public EventTest() v super(Event Test);v Container container = getContentPane();v button = new JButton(Click Me);v EventHandler handler = new EventHandler();v container.add(button);v setSize(200,100);v setVisible(true);v button.addActionListener(handler);v 华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center事件处理示例事件处理示例v class EventHandler implements ActionListener v public void actionPerformed(ActionEvent event) v (JButton)event.getSource().setText(Im Clicked);v v v public static void main(String args) v EventTest app = new EventTest();v app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);v v 华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常见的事件类和监听接口常见的事件类和监听接口v不同的事件源根据用户的操作可能产生不同的事件对象,并由相应的事件监听对象处理事件源产生的事件需要实现的监听接口JButtonActionEventActionListenerJCheckBoxJRadioButtonJTextFieldTextEventTextListenerKeyEventKeyListenerJComboBoxItemEventItemListenerJList华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center鼠标事件类和监听接口鼠标事件类和监听接口v所有的图形组件都能产生鼠标事件 java.awt.event.MouseEventv处理不同的鼠标操作应实现不同的接口 鼠标点击、鼠标进入组件、鼠标离开组件 实现MouseListener接口 鼠标在组件中移动和拖动 实现MouseMotionListenerv查看Java API文档,实现这些接口应该定义哪些方法?华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center事件适配器事件适配器v由JavaAPI提供的实现了相应事件监听接口的抽象类,可直接使用而无需定义额外的事件处理类,从而简化事件处理代码 addMouseListener(new MouseAdapter() mouseClicked(MouseEvent event) / );华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center界面布局界面布局v设计图形界面时,程序员应该考虑组件在容器中的位置、大小和组件之间的排列方式v如果没有使用布局管理器,程序员需要确定每个组件的大小和在容器中的坐标: JButton btn = new JButton(“Ok”); btn.setBounds(10, 20, 60, 20); add(btn); 当窗口大小改变时,组件不会自动调整位置和大小华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center布局管理器布局管理器vJava使用布局管理器简化组件布局工作 决定图形组件的排列形式 实现接口java.awt.LayoutManagerv使用布局管理器的好处 当程序窗口尺寸改变时,布局管理器能自动调整组件的位置和大小华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. Center常用的界面布局形式常用的界面布局形式v常用的布局管理器 FlowLayout BorderLayout BoxLayout CardLayout GridLayout GridBagLayoutv通过容器组件的setLayout()方法设置容器中的组件排列形式,如: setLayout(new FlowLayout();华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterFlowLayoutv最简单的界面布局方式,从左至右、从上至下按顺序依次摆放组件: setLayout(new FlowLayout(); add(button1); add(button2); add(button3); add(button4); add(button5);华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterBorderLayoutv按东南西北中五个区域摆放组件,通常作为窗口主框架 setLayout(new BorderLayout(); add(“North”, button1); add(“West”, button2); add(“East”, button3); add(“South”, button4); add(“Center”, button5);华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterGridLayoutv各组件占用相等的格空间 setLayout(new GridLayout(3, 2); add(button1); add(button2); add(button3); add(button4); add(button5);华中科技大学华中科技大学IBM技术中心技术中心HUST & IBM Computer Tech. CenterGridBagLayoutv最复杂、最灵活的布局方式,将容器空间划分成网格,每个组件可占用多个网格。通常还需要使用GridBagConstraints对象设置组件占用的格数和方位。加入组件前,需要调用布局管理器对象的setConstraints()方法设置组件的显示约束。欢迎提问欢迎提问
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!