java面向对象程序设计第2版第10章-javaswing图形用户界面.ppt
《java面向对象程序设计第2版第10章-javaswing图形用户界面.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第2版第10章-javaswing图形用户界面.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java面向对象程序设计面向对象程序设计第第2 2版版第第10章章配合第第2版例子源代码一起使用版例子源代码一起使用Power point 制作:耿祥义 张跃平Java Swing图形用户界面 1导读导读210.1 Java SwingJava Swing概述概述 JavaJava的的 java.awtjava.awt包包,即即 JavaJava抽抽 象象 窗窗 口口 工工 具具 包包(AWTAWT:Abstract Abstract Window Window ToolkitToolkit)提提供供了了许许多多用用来来设计设计GUIGUI的组件类。的组件类。310.2 窗口窗口 Java提提
2、供供的的JFrame类类的的实实例例是是一一个个底底层层容容器器,即即通通常常所所称称的的窗窗口口。其其他他组组件件必必须须被被添添加加到到底底层层容容器器中中,以便借助这个地层容器和操作系统进行信息交互。以便借助这个地层容器和操作系统进行信息交互。JFrame类类是是Container类类的的间间接接子子类类。当当需需要要一一个窗口时,可使用个窗口时,可使用JFrame或其子类创建一个对象。或其子类创建一个对象。410.2.1 JFrameJFrame常用方法常用方法 JFrame()创建一个无标题的窗口。JFrame(String s)创建标题为s的窗口。public void setBo
3、unds(int a,int b,int width,int height 设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。public void setSize(int width,int height)设置窗口的大小。public void setLocation(int x,int y)设置窗口的位置,默认位置是(0,0)。public void setVisible(boolean b)设置窗口是否可见,窗口默认是不可见的。public void setResizable(boolean b)设置窗口是否可调整大小,默认
4、可调整大小。public void dispose()撤消当前窗口,并释放当前窗口所使用的资源。public void setExtendedState(int state)设置窗口的扩展状态.public void setDefaultCloseOperation(int operation)该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。例题例题10-110-15 例题1效果图610.2.2 菜单条、菜单、菜单项菜单条、菜单、菜单项 1 1菜菜单单条条 JComponentJComponent类类的的子子类类JMenubarJMenubar负负责责创创建建菜菜单单条条,JF
5、rameJFrame类类有有一一个个将将菜菜单单条条放放置到窗口中的方法置到窗口中的方法:setJMenuBar(JMenuBar bar);该方法将菜单条添加到窗口的顶端该方法将菜单条添加到窗口的顶端 2 2菜单菜单:JComponentJComponent类的子类类的子类JMenuJMenu负责创建菜单负责创建菜单,JMenuJMenu类的主要方法有以下几种类的主要方法有以下几种 JMenu()建立一个空标题的菜单。建立一个空标题的菜单。JMenu(String s)建立一个指定标题菜单,标题由参数建立一个指定标题菜单,标题由参数s s确定。确定。public void add(JMenu
6、Item item)向菜单增加由参数向菜单增加由参数itemitem指定的菜单选项指定的菜单选项。public JMenuItem getItem(int n)得到指定索引处的菜单选项。得到指定索引处的菜单选项。public int getItemCount()得到菜单选项的数目。得到菜单选项的数目。3.3.菜单项菜单项 JComponentJComponent类的子类类的子类JMenuItemJMenuItem负责创建菜单项负责创建菜单项,JMenuItemJMenuItem类的主要方法有以下几种:类的主要方法有以下几种:JMenuItem(String s)构造有标题的菜单项。构造有标题的
7、菜单项。JMenuItem(String text,Icon icon)构造有标题和图标的菜单项构造有标题和图标的菜单项public void setEnabled(boolean b)设置当前菜单项是否可被选择。设置当前菜单项是否可被选择。public String getText()得到菜单选项的名字。得到菜单选项的名字。public void setText(String name)设置菜单选项的名字为参数设置菜单选项的名字为参数namename指定的字符串。指定的字符串。public void setAccelerator(KeyStroke keyStroke)为菜单项设置快捷键。为
8、菜单项设置快捷键。4 4嵌嵌入入子子菜菜单单 JMenuJMenu是是JMenuItemJMenuItem的的子子类类,因因此此菜菜单单本本身身也也是是一一个个菜菜单单项项,当当把把一一个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。个菜单看作菜单项添加到某个菜单中时,称这样的菜单为子菜单。5 5菜菜单单上上的的图图标标:图图标标类类IconIcon声声明明一一个个图图标标,然然后后使使用用其其子子类类ImageIconImageIcon类类创创建建一一个个图标,如:图标,如:Icon icon=new ImageIcon(“a.gif”);例题例题10-210-27 例题2效果图8
9、10.3 常用组件与布局常用组件与布局 本本节节列列出出一一些些常常用用的的组组件件,读读者者可可以以查查阅阅类类库库文文档档,了了解解这这些些组组件件的的属属性性以以及及常常用用方方法法,也也可可以以在在命命令令行行窗窗口口反反编编译译组组件件即即时时查查看看组组件件所所具具有有的属性及常用方法,例如:的属性及常用方法,例如:C:javap javax.swing.JButton 910.3.1 常用组件常用组件 1 1文本框:由文本框:由JComponentJComponent的子类的子类JTextFieldJTextField创建文本框。创建文本框。2 2文本区:由文本区:由JCompo
10、nentJComponent的子类的子类JTexAreaJTexArea创建文本区。创建文本区。3 3按钮:由按钮:由JComponentJComponent的子类的子类JButtonJButton类用来创建按钮。类用来创建按钮。4 4标签:由标签:由JComponentJComponent的子类的子类JLabelJLabel类用来创建标签。类用来创建标签。5 5选择框:由选择框:由JComponentJComponent的子类的子类JCheckBoxJCheckBox类用来创建选择框。类用来创建选择框。6 6单单选选按按钮钮:由由JComponentJComponent的的子子类类JRadi
11、oButtonJRadioButton类类用用来来创创建建单单项选择框。项选择框。7 7下拉列表:下拉列表:由由JComponentJComponent的子类的子类JComboBoxJComboBox类用来创建下拉列表。类用来创建下拉列表。8 8密码框:由密码框:由JComponentJComponent的子类的子类JPasswordFieldJPasswordField创建密码框。创建密码框。密码框可以使用密码框可以使用setEchoChar(char c)setEchoChar(char c)重新设置回显字符重新设置回显字符 。密码框调用密码框调用char getPassword()cha
12、r getPassword()方法可以返回实际的密码。方法可以返回实际的密码。例例子子3 3(Example10_3.javaExample10_3.java ,ComponentInWindow.javaComponentInWindow.java )包包含含有有上面提到的常用组件。上面提到的常用组件。10 例题3效果图1110.3.2 常用容器常用容器 JComponent是Container的子类,因此JComponent子类创建的组件也都是容器。容器经常用来添加组件。Jframe是底层容器,本节提到的容器被习惯地称做中间容器,中间容器必须被添加到底层容器中才能发挥作用。1 1JPane
13、l JPanel 面面板板:使用JPanel创建面板,再向这个面板添加组件,然后把这个面板添加到其它容器中.JPanel面板的默认布局是FlowLayout布局。2 2滚动窗格滚动窗格JScrollPane:JScrollPane:可以将文本区放到一个滚动窗格中。JScorollPane scroll=new JScorollPane(new JTextArea();3 3拆分窗格拆分窗格JSplitPane:JSplitPane:窗格有两种类型水平拆分和垂直拆分JSplitPaneJSplitPane的两个常用的构造方法:的两个常用的构造方法:JSplitPane(int a,Compone
14、nt b,Component c)JSplitPane(int a,boolean b,Component c,Component d)4 4JLayeredPaneJLayeredPane分层窗格分层窗格:分层窗格使用add(Jcomponent com,int layer);添加组件com,并指定com所在的层 public void setLayer(Component c,int layer)可以重新设置组件c所在的层public int getLayer(Component c)可以获取组件c所在的层数。1210.3.3 常用布局常用布局_1 _1 容容器器可可以以使使用用方方法法s
15、etLayout(布布局局对对象象);设设置置自自己己的的布布局局,控制组件在容器中的位置。控制组件在容器中的位置。1 1FlowLayoutFlowLayout布局布局:1)1)创建创建布局对象布局对象 FlowLayout flow=new FlowLayout();2)容器容器concon使用布局对象使用布局对象con.setLayout(flow);3)con3)con可可以以使使用用ContainerContainer类类提提供供的的addadd方方法法将将组组件件顺顺序序地地添添加到容器中加到容器中;FlowLayoutFlowLayout布布局局对对象象调调用用相相应应的的方方法
16、法可可以以重重新新设设置置布布局局的的对对齐方式等齐方式等.2 2BorderLayoutBorderLayout布局布局 :BorderLayout BorderLayout 布局是布局是WindowWindow型容器的默认布局型容器的默认布局 。使使用用BorderLayoutBorderLayout布布局局的的容容器器concon,可可以以使使用用addadd方方法法将将一一个个组件组件b b添加到中心区域:添加到中心区域:con.add(b,BorderLayout.CENTER);或或 con.add(BorderLayour.CENTER,b);1310.3.3 常用布局常用布局_
17、2 _2 3 3CardLayout CardLayout 布局布局 :使用CardLayout的一般步骤如下:1)1)创建CardLayout对象 CardLayout card=new CardLayout();2)2)为容器设置布局 con.setLayout(card);3)3)容器调用add(String s,Component b)将组件b加入容器,并给出了显示该组件的代号s。4)4)布局对象card用CardLayout类提供的show()方法,显示容器con中组件代号为s的组件:card.show(con,s);4 4GridLayoutGridLayout布局布局:GridL
18、ayout布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout布局编辑器的一般步骤如下:1)创建布局对象,指定划分网格的行数m和列数n GridLayout grid=new new GridLayout(10,8);2)使用GridLayout布局的容器调用方法add(Component c)将组件c加入容器。例题例题4 4 利用GriderLayout布局模拟的国际象棋棋盘,效果如图10.5。14 例题4效果图1510.3.3 常用布局常用布局_ _3 3 5 5BoxLayoutBoxLayout布布局局:使用盒式布局的容器将组件排列在一行
19、或一列.BoxLayout布局的一般步骤如下:1)创建布局对象,使用BoxLayou的构造方法BoxLayout(Container con,int axis)可以创建一个盒式布局对象.2)可以使用Box类的类(静态)方法 createHorizontalBox()获得一个具有行型盒式布局的盒式容器;使用Box类的类(静态)方法 createVerticalBox()获得一个具有列型盒式布局的盒式容器。3)控制盒式布局容器中组件之间的距离 Box类调用静态方法createHorizontalStrut(int width)可以得到一个不可见的水平Struct对象,称做水平支撑.Box类调用静态
20、方法createVertialStrut(int height)可以得到一个不可见的垂直Struct对象,称做垂直支撑。例例子子5 5 代代码码链链接接 两个列型盒式容器boxV1、boxV2和一个行型盒式容器baseBox。在列型盒式容器的组件之间添加垂直支撑,控制组件之间的距离,将boxV1、boxV2添加到baseBox中,并在它俩之间添加了水平支撑。程序运行效果如图10.6。6 6nullnull布布局局 :空布局容器可以准确地定位组件在容器的位置和大小。组件调用setBounds(int a,int b,int width,int height)方法可以设置本身的大小和在容器中的位置
21、。16 例题5效果图1710.4 处理事件处理事件 学学习习组组件件除除了了要要熟熟悉悉组组件件的的属属性性和和功功能能外外,一一个个更更重重要要的的方方面面是是学学习习怎怎样样处处理理组组件件上上发发生生的的界界面面事事件件。当当用用户户在在文文本本框框中中键键入入文文本本后后按按回回车车键键、单单击击按按钮钮、在在一一个个下下拉拉式式列列表表中中选选择择一个条目等操作时,都发生界面事件。一个条目等操作时,都发生界面事件。程程序序有有时时需需对对发发生生的的事事件件作作出出反反应应,来来实实现现特特定定的的任任务务,例例如如,用用户户单单击击一一个个名名字字叫叫“确确定定”或或名名字字叫叫“
22、取取消消”的的按按钮钮,程序可能需要作出不同的处理程序可能需要作出不同的处理。1810.4.1 事件处理模式事件处理模式 1 1事件源事件源:能够产生事件的对象都可以成为事件源.2 2监监视视器器 :事件源通过调用相应的方法将某个对象注册为自己的监视器。对于文本框,这个方法是:addActionListener(监视器监视器);事件源注册监视器之后,相应的操作就会导致相应的事件的发生,并通知监视器,监视器就会作出相应的处理。3 3处理事件的接口处理事件的接口:监视器负责处理事件源发生的事件。监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处理事件。Java规定:为
23、了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,那么当事件源发生事件时,监视器就自动调用被类重写的某个接口方法(如图10.7)。19 事件处理模式效果图2010.4.2 ActionEventActionEvent事件事件 1 1 ActionEvent ActionEvent事件源事件源:文本框、按纽、菜单项、密码框和单选按纽都可以触发ActionEvent事件,即都可以成为ActionEvent事件的事件源。2 2注册监视器注册监视器:能触发ActionEvent事件的组件使用 addActionListener(ActionListener l
24、isten)将实现ActionListener接口的类的实例注册为事件源的监视器。3 3ActionListenerActionListener接口接口:ActionListener接口在包中,该接口中只有一个方法:public void actionPerformed(ActinEvent e)事件源触发ActionEvent事件后,监视器将发现触发的ActionEvent事件,然后调用接口中的方法:actionPerformed(ActinEvent e)对发生的事件作出处理。ActionEvent类事先创建的事件对象就会传递给该方法的参数e。4 4ActionEventActionEve
25、nt类中的方法类中的方法:public Object getSource()调用该方法可以获取发生ActionEvent事件的事件源对象的引用。public String getActionCommand()调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个命令字符串。21 例题6 例子6中,文本框text是JTextField的实例,text的监视器listener是实现ActionLiener接口的PoliceListen类创建的对象。在text中输入数字字符串并回车,监视器负责将text中的字符串转化为数,然后计算这个数的平方,并在命令行窗口输出平方。例子6中的tex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 程序设计 10 javaswing 图形 用户界面
限制150内