Java面向对象程序设计第2版第10章_Java Swing图形用户界面

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020/4/231《Java面向对象程序设计》第2版第10章配合Java面向对象程序设计第2版例子源代码一起使用Powerpoint制作:耿祥义张跃平JavaSwing图形用户界面2020/4/232导读2020/4/233§10.1JavaSwing概述Java的java.awt包,即Java抽象窗口工具包(AWT:AbstractWindowToolkit)提供了许多用来设计GUI的组件类。2020/4/234§10.2窗口Java提供的JFrame类的实例是一个底层容器,即通常所称的窗口。其他组件必须被添加到底层容器中,以便借助这个地层容器和操作系统进行信息交互。JFrame类是Container类的间接子类。当需要一个窗口时,可使用JFrame或其子类创建一个对象。2020/4/235§10.2.1JFrame常用方法JFrame()创建一个无标题的窗口。JFrame(Strings)创建标题为s的窗口。publicvoidsetBounds(inta,intb,intwidth,intheight设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。publicvoidsetSize(intwidth,intheight)设置窗口的大小。publicvoidsetLocation(intx,inty)设置窗口的位置,默认位置是(0,0)。publicvoidsetVisible(booleanb)设置窗口是否可见,窗口默认是不可见的。publicvoidsetResizable(booleanb)设置窗口是否可调整大小,默认可调整大小。publicvoiddispose()撤消当前窗口,并释放当前窗口所使用的资源。publicvoidsetExtendedState(intstate)设置窗口的扩展状态.publicvoidsetDefaultCloseOperation(intoperation)该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。例题10-12020/4/236例题1效果图2020/4/237§10.2.2菜单条、菜单、菜单项1.菜单条JComponent类的子类JMenubar负责创建菜单条,JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBarbar);该方法将菜单条添加到窗口的顶端2.菜单:JComponent类的子类JMenu负责创建菜单,JMenu类的主要方法有以下几种JMenu()建立一个空标题的菜单。JMenu(Strings)建立一个指定标题菜单,标题由参数s确定。publicvoidadd(JMenuItemitem)向菜单增加由参数item指定的菜单选项。publicJMenuItemgetItem(intn)得到指定索引处的菜单选项。publicintgetItemCount()得到菜单选项的数目。3.菜单项JComponent类的子类JMenuItem负责创建菜单项,JMenuItem类的主要方法有以下几种:JMenuItem(Strings)构造有标题的菜单项。JMenuItem(Stringtext,Iconicon)构造有标题和图标的菜单项publicvoidsetEnabled(booleanb)设置当前菜单项是否可被选择。publicStringgetText()得到菜单选项的名字。publicvoidsetText(Stringname)设置菜单选项的名字为参数name指定的字符串。publicvoidsetAccelerator(KeyStrokekeyStroke)为菜单项设置快捷键。4.嵌入子菜单JMenu是JMenuItem的子类,因此菜单本身也是一个菜单项,当把一个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。5.菜单上的图标:图标类Icon声明一个图标,然后使用其子类ImageIcon类创建一个图标,如:Iconicon=newImageIcon(“a.gif”);例题10-22020/4/238例题2效果图2020/4/239§10.3常用组件与布局本节列出一些常用的组件,读者可以查阅类库文档,了解这些组件的属性以及常用方法,也可以在命令行窗口反编译组件即时查看组件所具有的属性及常用方法,例如:C:\javapjavax.swing.JComponentC:\javapjavax.swing.JButton2020/4/2310§10.3.1常用组件1.文本框:由JComponent的子类JTextField创建文本框。2.文本区:由JComponent的子类JTexArea创建文本区。3.按钮:由JComponent的子类JButton类用来创建按钮。4.标签:由JComponent的子类JLabel类用来创建标签。5.选择框:由JComponent的子类JCheckBox类用来创建选择框。6.单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。7.下拉列表:由JComponent的子类JComboBox类用来创建下拉列表。8.密码框:由JComponent的子类JPasswordField创建密码框。密码框可以使用setEchoChar(charc)重新设置回显字符。密码框调用char[]getPassword()方法可以返回实际的密码。例子3(Example10_3.java,ComponentInWindow.java)包含有上面提到的常用组件。2020/4/2311例题3效果图2020/4/2312§10.3.2常用容器JComponent是Container的子类,因此JComponent子类创建的组件也都是容器。容器经常用来添加组件。Jframe是底层容器,本节提到的容器被习惯地称做中间容器,中间容器必须被添加到底层容器中才能发挥作用。1.JPanel面板:使用JPanel创建面板,再向这个面板添加组件,然后把这个面板添加到其它容器中.JPanel面板的默认布局是FlowLayout布局。2.滚动窗格JScrollPane:可以将文本区放到一个滚动窗格中。JScorollPanescroll=newJScorollPane(newJTextArea());3.拆分窗格JSplitPane:窗格有两种类型水平拆分和垂直拆分JSplitPane的两个常用的构造方法:JSplitPane(inta,Componentb,Componentc)JSplitPane(inta,booleanb,Componentc,Componentd)4.JLayeredPane分层窗格:分层窗格使用add(Jcomponentcom,intlayer);添加组件com,并指定com所在的层publicvoidsetLayer(Componentc,intlayer)可以重新设置组件c所在的层publicintgetLayer(Componentc)可以获取组件c所在的层数。2020/4/2313§10.3.3常用布局_1容器可以使用方法setLayout(布局对象);设置自己的布局,控制组件在容器中的位置。1.FlowLayout布局:1)创建布局对象FlowLayoutflow=newFlowLayout();2)容器con使用布局对象con.setLayout(flow);3)con可以使用Container类提供的add方法将组件顺序地添加到容器中;FlowLayout布局对象调用相应的方法可以重新设置布局的对齐方式等.2.BorderLayout布局:BorderLayout布局是Window型容器的默认布局。使用BorderLayout布局的容器con,可以使用add方法将一个组件b添加到中心区域:con.add(b,BorderLayout.CENTER);或con.add(BorderLayour.CENTER,b);2020/4/2314§10.3.3常用布局_23.CardLayout布局:使用CardLayout的一般步骤如下:1)创建CardLayout对象CardLayoutcard=newCardLayout();2)为容器设置布局con.setLayout(card);3)容器调用add(Strings,Componentb)将组件b加入容器,并给出了显示该组件的代号s。4)布局对象card用CardLayout类提供的show()方法,显示容器con中组件代号为s的组件:card.show(con,s);4.GridLayout布局:GridLayout布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout布局编辑器的一般步骤如下:1)创建布局对象,指定划分网格的行数m和列数nGridLayoutgrid=newnewGridLayout(10,8);2)使用GridLayout布局的容器调用方法add(Componentc)将组件c加入容器。例题4利用GriderLayout布局模拟的国际象棋棋盘,效果如图10.5。2020/4/2315例题4效果图2020/4/2316§10.3.3常用布局_35.BoxLayout布局:使用盒式布局的容器将组件排列在一行或一列.BoxLayout布局的一般步骤如下:1)创建布局对象,使用BoxLayou的构造方法BoxLayout(Containercon,intaxis)可以创建一个盒式布局对象.2)可以使用Box类的类(静态)方法createHorizontalBox()获得一个具有行型盒式布局的盒式容器;使用Box类的类(静态)方法createVerticalBox()获得一个具有列型盒式布局的盒式容器。3)控制盒式布局容器中组件之间的距离Box类调用静态方法createHorizontalStrut(intwidth)可以得到一个不可见的水平Struct对象,称做水平支撑.Box类调用静态方法createVertialStrut(intheight)可以得到一个不可见的垂直Struct对象,称做垂直支撑。例子5代码链接两个列型盒式容器boxV1、boxV2和一个行型盒式容器baseBox。在列型盒式容器的组件之间添加垂直支撑,控制组件之间的距离,将boxV1、boxV2添加到baseBox中,并在它俩之间添加了水平支撑。程序运行效果如图10.6。6.null布局:空布局容器可以准确地定位组件在容器的位置和大小。组件调用setBounds(inta,intb,intwidth,intheight)方法可以设置本身的大小和在容器中的位置。2020/4/2317例题5效果图2020/4/2318§10.4处理事件学习组件除了要熟悉组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。当用户在文本框中键入文本后按回车键、单击按钮、在一个下拉式列表中选择一个条目等操作时,都发生界面事件。程序有时需对发生的事件作出反应,来实现特定的任务,例如,用户单击一个名字叫“确定”或名字叫“取消”的按钮,程序可能需要作出不同的处理。2020/4/2319§10.4.1事件处理模式1.事件源:能够产生事件的对象都可以成为事件源.2.监视器:事件源通过调用相应的方法将某个对象注册为自己的监视器。对于文本框,这个方法是:addActionListener(监视器);事件源注册监视器之后,相应的操作就会导致相应的事件的发生,并通知监视器,监视器就会作出相应的处理。3.处理事件的接口:监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处理事件。Java规定:为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,那么当事件源发生事件时,监视器就自动调用被类重写的某个接口方法(如图1

1 / 54
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功