版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章
图形界面设计及事件处理
提纲教学要求了解Java组件使用的基本方法掌握Java界面组成方式及常用的布局管理方式(边界、流式、网格)的使用掌握事件处理方式熟练掌握常用组件JButton和JLabel相关编程熟练掌握String类、8种基本数据类型、常用运算符的使用本次课内容组件简介界面组成方式要求:了解Java的界面组件掌握界面组成方式图形界面体系组件部分自绘制部分图形界面体系组件简介有Awt组件和Swing组件2种AWT组件是JDK1.0和1.1平台用于开发GUI的工具,由于与操作系统联系紧密,被称为重量级组件,可移植性不好。Swing组件称为轻量级组件,在AWT组件名称前冠以J字母就是其对应的Swing组件,例如,在AWT中的Button类,在Swing中为Jbutton。AWT存在于java.awt包中,Swing组件存在于javax.swing包中。Swing组件与AWT组件的最大不同是:Swing组件完全由Java语言实现,功能更强大,而AWT而不是。Awt组件类关系结构(一)java.awt.ComponentButtonCanvasContainerChoiceCheckboxTextComponentLabelScrollbarListPanelScrollPaneWindowTextFieldTextAreaAppletFrameDialogFileDialogMenuComponentMenuItemMenuBarMenuPopupMenuCheckboxMenuItemAwt组件类关系结构(二)---菜单Swing组件类关系结构ContainerComponentWindowJFrameJDialogJFileDialogFrameDialogJComponentJComboboxJTextComponentJLabelJListJPanelJScrollerJTextFieldJTextAreaJMenuBarAbstractButtonJButtonJToggleButtonJMenuItemSwing组件1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar
3)特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.4)基本控件:实现人机交互的组件,如JButton,JComboBox,JList,JMenu,JSlider,JTextField等。5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip等。6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser,JFileChoose,JFileChooser,JTable,JTextArea等。
Swing组件的使用办法容器类组件一般常用add函数在界面上添加组件基本控件带文本显示类控件:JButtonJTextFieldJLabelJTextArea等常用setText(Strings)修改文本,用getText()获得文本Swing组件的使用办法列表类组件JComboBox
JList
JTree
JTable一般通过getSelectedIndex()获得选中的条目编号,
getSelectedItem()或者getSelectedValue()获得选中的条目举例Swing组件的使用办法Swing组件的使用办法—举例在指定地址端口建立服务器newServerSocket(Integer.parseInt(jTextField2.getText()),10);在状态标签上提示在数据接收窗口显示数据dr1=(DefaultTableModel)this.jTable1.getModel();dr1.insertRow(0,rows);保存接收数据dr1.getValueAt(i,j)this.jLabel3.setText("服务器"+this.jTextField2.getText()+"已启动");JButtonJTextFieldJMenuBar上的JMenuJFrame例:计算器界面各部分的表示界面组成方式外围顶层容器中间件(容器)基本组件1、外围顶层容器:可独立存在,但是不可放到其他组件中Awt组件:Frame、Dialog、Window、AppletSwing组件:JFrame、JDialog、JWindow、JApplet2、中间件:上面可容纳其他组件,但自身也必须位于其他容器中Awt组件:PanelSwing组件:JPanel和以Pane结尾的所有类3、基本组件:上面不可容纳其他组件,而且自身也必须位于其他容器中除了1、2之外的所有组件类对象界面组成方式界面组成实例---计算器界面一个JFrame三个JPanel多个JButton界面组成实例---计算器界面界面布局流式布局(FlowLayout)P253网格布局(GridLayout)P257边框式布局(BorderLayout)P253其他布局流式布局(FlowLayout)布局原则:按照组件添加的先后次序遵循从左到右、从上到下的规律对组件进行排版布局不改变组件原来的大小使用步骤产生一个布局管理器,即一个FlowLayout对象例如:FlowLayoutl1=newFlowLayout();把一个容器的布局交由这个布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);第3个JPanel使用流式布局的效果网格布局(GridLayout)布局原则:把容器等分成多行多列,把组件按照先来后到的次序等大小从左到右、从上到下安放在对应网格中会改变组件大小使用步骤产生一个布局管理器,即一个GridLayout对象例如:GridLayoutl1=newGridLayout(3,4);把一个容器的布局交由这个布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);第3个JPanel使用网格布局的过程示意GridLayoutl1=newGridLayout(4,5);边界布局(BorderLayout)布局原则:把容器分成North、South、East、West和Center五个部分,每个部分只显示一个组件会改变组件大小使用步骤产生一个布局管理器,即一个BorderLayout对象例如:BorderLayoutl1=newBorderLayout();把一个容器的布局交由这个布局管理器管理例如:JFramej1=newJFrame();j1.setLayout(l1);NorthWestEastCenterSouth边界布局的特点边界布局实例一个JTextField位于North一个JPanel位于Center一个JPanel位于North边界布局举例一个JPanel位于West一个JPanel位于Center提问使用前面3种布局方式管理这个界面,界面第一次应如何划分?用什么方式布局?BorderLayout一个JFrame界面组成实例---计算器界面计算器界面的程序实现publicclassJisuanqiextendsJFrame{JTextFieldjt1;JPaneljpzong;JPaneljpwest;JPaneljpnorth;JPaneljpcenter;JButtonjbnorth[]=newJButton[3];JButtonjbwest[]=newJButton[4];JButtonjbcenter[]=newJButton[20];//界面初始化publicJisuanqi(){//制作文本框jt1=newJTextField("0.");//制作面板jpzong=newJPanel();jpwest=newJPanel();jpnorth=newJPanel();jpcenter=newJPanel();//制作按钮for(inti=0;i<jbnorth.length;i++){jbnorth[i]=newJButton("north"+i);}for(inti=0;i<jbwest.length;i++){jbwest[i]=newJButton("west"+i);}for(inti=0;i<jbcenter.length;i++){jbcenter[i]=newJButton("center"+i);}
//布局North面板GridLayoutg1=newGridLayout(1,3);jpnorth.setLayout(g1);for(inti=0;i<jbnorth.length;i++){jpnorth.add(jbnorth[i]);}
//布局West面板g1=newGridLayout(4,1);
jpwest.setLayout(g1);for(inti=0;i<jbwest.length;i++){
jpwest.add(jbwest[i]);}
//布局Center面板g1=newGridLayout(4,5);
jpcenter.setLayout(g1);for(inti=0;i<jbcenter.length;i++){
jpcenter.add(jbcenter[i]);}
//布局zong面板BorderLayoutb1=newBorderLayout();jpzong.setLayout(b1);jpzong.add(jpnorth,BorderLayout.NORTH);jpzong.add(jpwest,BorderLayout.WEST);jpzong.add(jpcenter,BorderLayout.CENTER);
//布局JFrameb1=newBorderLayout();this.add(jt1,BorderLayout.NORTH);this.add(jpzong,BorderLayout.CENTER);
//设置计算器界面属性this.setSize(400,300);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
//在main函数中生成计算器界面publicstaticvoidmain(Stringargs[]){
}}Jisuanqij1=newJisuanqi();j1.setTitle("计算器");事件:用户发出命令,事件ID(标志不同的事件)事件类(记录事件发生的地点以及相关数据)事件处理事件监听(处理)者:具备一定标志,能够处理一定事件的类(对象)事件源:图形用户界面上每个可能产生事件的组件。注册监听:建立事件源与事件监听者之间的关系事件源事件监听处理者事件(ID,事件类)事件处理(过程)ComponentEventInputEventjava.util.EventObjectjava.awt.AWTEventActionEventTextEventAdjustmentEventItemEventContainerEventFocusEventPaintEventWindowEventMouseEventKeyEvent事件类事件类大部分都在java.awt.event包中监听接口:事件类的Event换成Listener事件监听者类例如:ActionEvent事件的监听者即为ActionListener实现类监听接口的类即为监听者类例如:classximplementsActionListener{…publicvoidactionPerformed(ActionEventevt){}}事件处理函数publicvoidactionPerformed(ActionEventevt){}ACTION_PERFORMED事件源publicvoidactionPerformed(ActionEvente){………}目标:点击以下数字按钮,文本框上能出现相应的数字事件源例如:点击5按钮时,文本框上显示5事件源:一个JButton-----jbutton1事件监听者:有2种情况第一种情况:监听者是含有事件源的界面publicclassJisuanqiextendsJFrameimplementsActionListener{…………publicvoidactionPerformed(ActionEventevt){……………..}事件监听者(一)第二种情况:监听者是其他类publicclassQitaimplementsActionListener{…………publicvoidactionPerformed(ActionEventevt){……………..}事件监听者(二)注册监听jbutton1.addActionListener(newQita())jbutton1.addActionListener(newJisuanqi())连续加法2个全局操作数全局操作数在什么地方定义?类中定义,不要在函数中定义。如何获得按钮上(jbutton1)的内容?Strings=jbutton1.getText();如何修改文本框上(jt1)的内容?jt1.setText(“5”);数到字符串的转换inti=789;Strings=(String)i;Strings=Integer.toString(i);Strings=“”+i;字符串到数的转换Strings=“15.6”;f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八大工种安全教育培训(建筑工程)
- 产妇血友病护理查房
- 《薛禄-胶人》阅读答案及翻译
- 社区护士家庭访视的沟通唐莹教授护患沟通护患关系
- 《女性养生讲座》课件
- 《周管理学大》课件
- 公式计算函数y=25x3+5x+arcsin9x的导数
- 《精细有机合成化学》课件
- 下肢动脉硬化闭塞手术
- 探索社区背景社会工作专业教学案例宝典
- 环境影响评价智慧树知到答案章节测试2023年桂林电子科技大学
- 2023年江苏小高考历史试卷含答案1
- 酒店事故风险评估报告
- 2022年全国统一高考日语真题试卷及答案
- GB/T 3280-2015不锈钢冷轧钢板和钢带
- GB/T 28655-2012业氟化氢铵
- 氧气(MSDS)安全技术说明书
- 第一章膳食调查与评价
- GB 5606.3-2005卷烟第3部分:包装、卷制技术要求及贮运
- 工程制图 第4章 截交线和相贯线
- 糖原的合成与分解培训课件
评论
0/150
提交评论