第八章 Swing图形用户界面程序设计_第1页
第八章 Swing图形用户界面程序设计_第2页
第八章 Swing图形用户界面程序设计_第3页
第八章 Swing图形用户界面程序设计_第4页
第八章 Swing图形用户界面程序设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章Swing图形用户界面程序设计,8.1简介8.2基本GUI组件组件容器8.3布局管理器8.4事件处理模型事件监听器事件适配器8.5举例,8.1简介,图形用户界面(GUI)数据的图形显示形式友好的交互方式简化计算机软件的学习过程早期版本的GUI组件所在的包:java.awt,AWT主要包括组件、容器、布局管理器、事件处理模型java.awtjava.awt.event与平台相关性较强:AWT的组件是重量级的。SwingGUI组件所在的包:javax.swingSwing组件的平台相关性较小(lightweight),8.1简介,AWT包主要类的层次关系,8.1简介,AWT包主要类的层次关系,JComponent,组件类的层次结构java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-javax.swing.JComponentJComponent大多数Swing组件类父类,8.2Swing组件,容器各种组件必须放在容器容器本身也是一种组件分类顶层容器其它容器组件基本控制组件不可编辑的信息显示组件可编辑的信息显示组件,8.2Swing组件:一些GUI组件,标签(JLabel)文本框(JTextField)按钮(JButton)复选框(JCheckBox)组合框(JComboBox)文本(JTextArea)框架(JFrame)面板(JPanel),标签(JLabel),标签为GUI提供文本(主要)或图像(也可以)信息对应类(JLabel)(JComponent的子类)可以显示:单行的只读的文本信息图像同时显示文本与图像信息程序一般不修改标签的内容,文本框(JTextField),文本框(JTextField)显示单行的文本信息JTextFieldextendsJTextComponent,按钮(JButton),当鼠标左键单击按钮组件时,能触发特定的事件在Java中,广义的按钮包括:命令式按钮(JButton)复选框(JCheckBox)单选按钮(JRadioButton),按钮类的层次结构,组合框(JComboBox),组合框(JComboBox)可以从下拉式的列表框中选取其中的列表项有时也称为下拉框(drop-downlist)类JComboBox中的方法getSelectedIndex()返回当前被选中的项setMaximumRowCount(n)设置最多显示列表项的项数滚动条(Scrollbar)会自动加上,Swing组件,JbuttonJCheckBoxJlabelJlistJScrollBarJTextAreaJTextFieldJmenuJMenuBarJMenuItemJCheckBoxMenuItem,ImageIconJPasswordFieldJRadioButtonJPopupMenuJtableJToolBarJtreeJComboBox,框架(JFrame),类JFrame是java.awt.Frame的子类在Swing的组件中,JFrame并不全是由Java编写的是一种与平台关系比较密切的组件(Heavyweightcomponent)java.lang.Object|+-java.awt.Component|+-java.awt.Container|+-java.awt.Window|+-java.awt.Frame|+-javax.swing.JFrame,面板(JPanel),一种中间容器,用来组成其它组件可以添加各种组件(包括面板组件)面板(JPanel)的大小由它所包含的组件决定当组件个数增加,面板(JPanel)也会随之而增大,Swing容器,JPanelBoxJDesktopPaneJScrollPaneJOptionPaneJRootPane:JAppletJFrameJInternalFrameJDialogJWindow,容器,常用:JPanel,JFrame,JAppletJPanel和JApplet:JPanel不创建自己的窗口,因为它常用于将组件编组放入其它容器(JFrame,JApplet)中,它缺省的布局管理器为FlowLayout。JFrame:是一个功能齐全的、顶层的、可重定义尺寸的、带有菜单条的窗口。可以指定标题、图标和光标。它缺省的布局管理器为BorderLayout,且生成与窗口一样的事件。,8.3布局管理器,用来控制组件在容器中的布局方式常用布局管理器:FlowLayout:组件从左到右、从上到下,一个挨一个地放在容器中。Panel和Applet的默认容器。GridLayout:网格布局管理器。每个网格单元放置一个组件或容器。BorderLayout:按照东、西、南、北、中安排组件。是Window、Frame、Dialog的默认容器。CardLayout:卡式布局管理器。GridBagLayout:复杂的网格布局管理器。,FlowLayout,是一种最基本的布局管理器是java.awt.Applet、java.awt.Panel和javax.swing.JPanel的默认布局方式在容器中,从左到右依次放置GUI组件当组件排到容器一行的末尾时,则从下一行开始接着排列组件每行组件的对齐方式可以是:左对齐、中间(默认对齐方式)和右对齐FlowLayout();FlowLayout(FlowLayout.LEFT);(5像素)FlowLayout(FlowLayout.RIGHT,10,20);,BorderLayout,是容器JFrame和JApplet的默认布局方式将容器分成五个区域:NORTH(顶部),SOUTH(底部),WEST(左侧),EAST(右侧),CENTER(中间)每个区域最多只能1个组件构造方法:BorderLayout(hGap,vGap);hGap区域间的水平间隙vGap-区域间的竖直间隙上面两个数据的默认值是0添加组件myContainer.add(component,position)component需要加入到容器中的组件positions(BorderLayout.NORTH)NORTH,SOUTH,EAST,WEST,CENTER,BorderLayout类功能:分成五个区创建:setLayout(newBorderLayout();将其他构件加入Add(newButton(“东”),“East”);Add(newButton(“南”),“South”);Add(newButton(“西”),“West”);Add(newButton(“北”),“North”);Add(newButton(“中”),“Center”);,GridLayout,布局管理器GridLayout按行与列将容器等分成网格每个组件占用具有相同宽度和高度的网格添加组件占用网格的顺序:从上到下,从左到右当一行满了,则继续到下一行,仍然是从左到右,CardLayout,CardLayout的布局方式有点象码“扑克牌”一个组件压在另一个组件的上面,所以每次一般只能看到一个组件,布局管理器嵌套,实际上是容器的嵌套,被嵌套的容器可以具有不同的布局管理器在嵌套的布局管理器中JPanel通常起到了“桥”的作用,GridBagLayout类和GridBagConstraints类功能:借助于GridBagConstraints类,实现更灵活的外观管理每个构件后都跟随一个GridBagLayout对象实体,来决定构件的外观.创建GridBagLayoutmyLayout=newGridBagLayout();GridBagConstraints类的约束条件gridwidth,gridheight,gridx,gridy,weightx,weighty,ipadx,ipady,insets,fill,anchor设置(P287),例:(GridBagApplet.html),publicvoidinit()GridBagLayoutlayout=newGridBagLayout();setLayout(layout);GridBagConstraintsGBC=newGridBagConstraints();Buttonbutton1=newButton(button1);Buttonbutton2=newButton(button2);Buttonbutton3=newButton(button3);Buttonbutton4=newButton(button4);Buttonbutton5=newButton(button5);Buttonbutton6=newButton(button6);Buttonbutton7=newButton(button7);Buttonbutton8=newButton(button8);Buttonbutton9=newButton(button9);,GBC.fill=GridBagConstraints.BOTH;(按钮可以在水平和垂直两个方向扩展)layout.setConstraints(button1,GBC);add(button1);GBC.gridwidth=GridBagConstraints.RELATIVE;(BOTH依然起作用,紧挨着最后一个按钮,)layout.setConstraints(button2,GBC);add(button2);GBC.gridwidth=GridBagConstraints.REMAINDER;(填充剩余部分)layout.setConstraints(button3,GBC);add(button3);,GBC.gridwidth=GridBagConstraints.REMAINDER;(表示该按钮独占一行)layout.setConstraints(button4,GBC);add(button4);,GBC.gridwidth=2;(表示该按钮占两个单元)layout.setConstraints(button5,GBC);add(button5);GBC.gridwidth=GridBagConstraints.REMAINDER;layout.setConstraints(button6,GBC);add(button6);,GBC.gridwidth=1;GBC.gridheight=2;(高度为两个单元)layout.setConstraints(button7,GBC);add(button7);,GBC.gridwidth=GridBagConstraints.REMAINDER;GBC.gridheight=1;layout.setConstraints(button8,GBC);add(button8);layout.setConstraints(button9,GBC);add(button9);,例,importjava.awt.*;importjavax.swing.*;publicclassTestJFramef;JButtonb;JTextFieldtf;publicvoidcreat()f=newJFrame(testing);Containerc=f.getContentPane();c.setLayout(newBorderLayout();b=newJButton(press);c.add(b,North);,tf=newJTextField();c.add(tf,South);f.setSize(200,200);f.setVisible(true);publicstaticvoidmain(Stringargs)Testt=newTest();t.creat();,8.4事件处理模型,GUI是由事件(event)驱动的当用户与GUI交互可以产生事件(events)一些常见的交互方式:移动鼠标,用鼠标点击按钮,在文本框中输入数据,关闭窗口等.Java1.1:基于事件的授权模型。事件:封装了事件的有效信息事件源:可供用户进行交互的GUI组件事件处理器:接受事件对象,并处理事件对象事件是通过事件监听器(eventlisteners)来管理的.源码顶部需加入:importjava.awt.event,8.4事件处理模型事件类,事件类(10类):,java.util.EventObject,java.awt.AWTEvent,ComponentEvent,ItemEvent,TextEvent,ContainerEvent,FocusEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,AdjustmentEvent,ActionEvent,8.4事件处理模型事件监听器,8.4事件处理模型事件监听器,8.4事件处理模型事件监听器,importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTest5implementsActionListener,WindowListenerJFramef;JButtonb;JTextFieldtf;publicvoidcreat()f=newJFrame(testing);Containerc=f.getContentPane();c.setLayout(newBorderLayout();f.addWindowListener(this);b=newJButton(press);,8.4事件处理模型事件监听器,b.addActionListener(this);c.add(b,North);tf=newJTextField();c.add(tf,South);f.setSize(200,200);f.setVisible(true);publicvoidactionPerformed(ActionEvente)tf.setText(theButtonispressed);publicstaticvoidmain(Stringargs)Test5t=newTest5();t.creat();,8.4事件处理模型事件监听器,publicvoidwindowClosing(WindowEvente)System.exit(0);publicvoidwindowActivated(WindowEvente);publicvoidwindowClosed(WindowEvente);publicvoidwindowDeactivated(WindowEvente);publicvoidwindowDeiconified(WindowEvente);publicvoidwindowIconified(WindowEvente);publicvoidwindowOpened(WindowEvente);,8.4事件处理模型事件适配器,为了简单化,为一些监听器Listener接口提供了适配器Adapter类.ComponentAdapterContainerAdapterFocusAdapterKeyAdapterMouseAdapterMouseMotionAdapterWindowAdapter,事件适配器类与事件监听器接口,8.4事件适配器举例内部类,importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassTest6implementsActionListen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论