优质ppt课件——第9章-GUI图形用户界面.pptx

上传人:小飞机 文档编号:3959792 上传时间:2023-03-29 格式:PPTX 页数:106 大小:745.50KB
返回 下载 相关 举报
优质ppt课件——第9章-GUI图形用户界面.pptx_第1页
第1页 / 共106页
优质ppt课件——第9章-GUI图形用户界面.pptx_第2页
第2页 / 共106页
优质ppt课件——第9章-GUI图形用户界面.pptx_第3页
第3页 / 共106页
优质ppt课件——第9章-GUI图形用户界面.pptx_第4页
第4页 / 共106页
优质ppt课件——第9章-GUI图形用户界面.pptx_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《优质ppt课件——第9章-GUI图形用户界面.pptx》由会员分享,可在线阅读,更多相关《优质ppt课件——第9章-GUI图形用户界面.pptx(106页珍藏版)》请在三一办公上搜索。

1、第9章 GUI图形用户界面,李慧芬B1-308,教学目标,了解Swing的体系结构及相关概念掌握Swing组件的特性和分类,了解使用Swing开发GUI程序的步骤掌握常用容器的分类,掌握JFrame、Jpanel的构造方法和常用方法掌握常用Swing组件的构造方法和常用方法了解GUI布局管理器的分类及特点了解事件处理模型的基本概念,掌握事件处理的基本步骤。,本章目录,9.1 Swing概述9.2 Swing容器 9.3 常用Swing组件 9.4 GUI布局管理器9.5 事件处理模型,9.1 Swing概述,GUI(Graphic User Interface):用户与计算机之间交互的图形化操

2、作界面,又称为图形用户接口Java语言提供两个处理图形用户界面的类库:java.awt包:Abstract Window ToolKit 抽象窗口工具包java.swing包:在AWT基础上构建的一套新的图形界面系统Awt与Swing的区别:Awt:Java处理图形用户界面的初始途径。重量级组件,把图形元素的创建和行为交给目标平台上的本地GUI工具箱进行处理。理论上“一次编写,随处运行”,实际上“一次编写,随处调试”Swing:是JFC(Foundation Classes)的一部分,轻量级组件,显示界面与本机OS无关,100%的纯Java实现。,1、Swing体系结构,Swing是在AWT的

3、基础上构建的图形界面系统。以AWT为基础,提供了AWT中的所有功能进行了扩充,提供了许多新的图形界面组件。,9.1 Swing概述,GUI设计三个概念:组件(Component):Java的图形用户界面的最基本组成部分。可以以图形化的方式显示在屏幕上并能与用户进行交互的对象。例如一个按钮,一个标签等。必须将组件放在一定的容器中才可以显示出来。容器(Container):本身也是一个组件。主要功能是容纳其他组件和容器。布局管理器(Layout Manager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。,7,注意:Component类

4、是一个抽象类,不能直接使用。,类结构,Swing的组件,Swing与AWT相似的组件,Swing比AWT增加的组件,2、Swing组件的特性,Swing组件的特性MVC体系结构:每个组件有对应的model类管理数据每个组件有相关的分离模型和界面可存取性支持:实现 了Accessible接口支持键盘操作设置边框使用图标,9.1 Swing概述,Swing组件的分类(1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个。(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。(3)特殊容器:在GUI上起特殊作用的中间层,如JInt

5、ernalJFrame,JLayeredPane,JRootPane等。(4)基本控件:实现人机交互的组件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField等。(5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip等。(6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser,JFileChoose,JFileChooser,JTable,JTextArea等。,9.1 Swing概述,使用Swing的基本规则 Swing组件不能直接添加到顶层容器中,必

6、须添加到一个与Swing顶层容器相关联的内容面板上。(1)把Swing组件放入一个顶层Swing容器的内容面板上(2)避免使用非Swing的重量级组件。,9.1 Swing概述,对JFrame添加组件有两种方式:(1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)(2)建立一个JPanel或 JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:JPanel contentPane=new JPa

7、nel();/把其它组件添加到Jpanel中;frame.setContentPane(contentPane);/把contentPane对象设置成为frame的内容面板,9.1 Swing概述,Swing程序设计流程(1)引入swing包(2)选择外观和感觉(3)设置顶层容器(4)设置按钮和标签(5)向容器中添加组件(6)在组件周围添加边界(7)进行事件处理,9.2 Swing容器,容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。Java程序界面的构成:一个顶层容器(即主窗口)顶层容器包含若干个中间容器 每个中间容器包含若

8、干个基本组件 按照合理的布局方式将它们组织在一起 基本组件可响应发生在其上的事件,9.2 Swing容器,Swing常用的顶层容器有JFrame:用来创建application,最常用的JApplet:用来创建appletJDialog:用来创建对话框,常用JWindow:不常用,9.2 Swing容器,中间容器JPanel,JScrollPane,JSplitPane,JTabbedPane、JInternalFrame:这些容器提供将有关组件按照某种布局组合在一起,然后放入中间容器或顶层容器的功能JPanel:提供一个面板JScrollPane:是具有滚动条的窗格JSplitPane:是具

9、有拆分功能的窗格JTabbedPane:是带有若干标签的分类窗格JInternalFrame:用于创建内嵌于JFrame中的内部框架Box:提供创建横向/纵向盒子容器的功能,9.2.1 JFrame框架,类 JFrame 是java.awt.Frame的子类JFrame上只能有一个唯一的组件JRootPane调用JFrame.getContentPane()方法可获得JFrame中内置的JRootPane对象。程序不能直接在JFrame实例对象上增加组件和设置布局管理器,应在JRootPane对象上增加组件和设置布局。Jframe的setDefaultCloseOperation方法可以设置单

10、击关闭按钮时的事件处理方式。,9.2.1 JFrame框架,19,9.2.1 JFrame框架,常用构造方法:JFrame():创建无标题窗口。JFrame(String s):创建标题名字是字符串s的窗口例如:JFrame f=new JFrame(“Hello”);setDefaultCloseOperation方法:设置单击窗口上的关闭按钮时的事件处理方式。JFrame.DO_NOTHING_ON_CLOSEJFrame.HIDE_ON_CLOSEJFrame.DISPOSE_ON_CLOSEJFrame.EXIT_ON_CLOSE,JFrame类的常用方法:,容器类Container的

11、常用方法,组件类Component的常用方法,例子-创建框架窗口,import java.awt.*;import javax.swing.*;public class JFrame_Exam extends JFrame public static void main(String args)JFrame_Exam mainJFrame=new JFrame_Exam();mainJFrame.setTitle(JFrame 框架示例!“);mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainJFrame.setSize

12、(300,300);mainJFrame.setLocationRelativeTo(null);mainJFrame.getContentPane().setLayout(new FlowLayout();mainJFrame.getContentPane().setBackground(Color.green);JLabel lbl=new JLabel(大家好,我是一个标签);JButton btn=new JButton(按钮);mainJFrame.getContentPane().add(lbl);mainJFrame.getContentPane().add(btn);mainJ

13、Frame.setVisible(true);,9.2.2 JPanel面板,面板(JPanel)轻量级容器组件没有标题的中间容器,实现容器的嵌套。默认布局管理器是FlowLayout这类容器不能独立存在,必须通过add()方法添加到一个顶层容器或存在于顶层容器的一个中间容器。面板(JPanel)的大小由它所包含的组件决定当组件个数增加,面板(JPanel)也会随之而增大,9.2.2 Jpanel面板,JPannel类的构造方法:public JPanel();public JPanel(boolean isDoubleBuffered);public JPanel(LayoutManager

14、 layout);public JPanel(LayoutManager layout,boolean isDoubleBuffered),JComponent类的常用方法,import java.awt.*;import javax.swing.*;public class JPanel_Exampublic static void main(String args)JFrame mainJFrame=new JFrame(框架+面板示例!);mainJFrame.setSize(240,240);mainJFrame.setLocation(200,200);Container conta

15、iner=mainJFrame.getContentPane();container.setBackground(Color.lightGray);container.setLayout(null);JPanel pnl=new JPanel();pnl.setSize(190,180);pnl.setBackground(Color.green);pnl.setLocation(20,20);JButton btn=new JButton(我是一个按钮,点击我);btn.setSize(170,40);btn.setBackground(Color.yellow);btn.setLocati

16、on(10,50);pnl.setLayout(null);/取消pnl的默认布局管理器 pnl.add(btn);/将命令按钮btn加入到面板pnl中 container.add(pnl);/将面板pnl加入到窗口默认面板中 mainJFrame.setVisible(true);,例子:,9.2.3 JDialog对话框,JDialog组件(对话窗口)作用:用来显示提示信息或接收用户输入。特点:没有最小化按钮、状态等控制元素。对话框一般都对应于一个顶层窗口,如JFrame窗口。对话框模式分类:有模式:在运行期间不允许用户同应用程序的其他窗口进行交互。通常情况下,程序要在处理完对话框中的数据

17、后才能进行下一步工作,因此,有模式的对话框应用较多。无模式:允许用户同时在该对话框和程序其他窗口中切换操作。,JDialog类的构造方法,JDialog类的常用方法,import java.awt.*;import javax.swing.*;public class TestJDialog public static void main(String args)JFrame mFrame=new JFrame(这个一个主框架);mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mFrame.setSize(300,300);mFram

18、e.setLocationRelativeTo(null);JDialog jd=new JDialog(mainJFrame);jd.setTitle(这是一个对话框);jd.setSize(200,200);jd.setLocationRelativeTo(null);jd.setVisible(true);jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);mFrame.setVisible(true);,例子:,9.2.4 Swing其他容器,(1)分层面板(JLayeredPane)Swing提供两种分层面板:JLayeredP

19、ane和JDesktopPane。JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置。向一个分层面板中添加组件,需要说明将其加入哪一层,指明组件在该层中的位置,语法为:add(Component c,Integer Layer,int position)(2)滚动窗口(JScrollPane)主要通过移动JViewport(视口)来实现。滚动条实际就是沿着组件移动视口,同时描绘出它在下面“看到”的内容,9.2.4 Swing其他容器,(3)分隔板(JSplitPane)JSplitPane提供可拆分窗口。支持水平拆分(JSplit

20、Pane.HORIZONTAL_SPLIT)和垂直(JSplitPane.VERTICAL_SPLIT)拆分并带有滑动条。常用方法有:JSplitPane(intnewOrientation,ComponentnewLeftComponent,ComponentnewRightComponent)/创建一个具有指定方向和指定组件的新 JSplitPane。addImpl(Component comp,Object constraints,int index)/增加指定的组件 setTopComponent(Component comp)/设置顶部的组件 setDividerSize(int n

21、ewSize)/设置拆分的大小 setUI(SplitPaneUI ui)/设置外观和感觉,9.2.4 Swing其他容器,(4)选项板(JTabbedPane)JTabbedPane提供一组可供用户选择的带有标签或图标的开关键。常用的方法如下:add(String title,Component component)/增加一个带特定标签的组件addChangeListener(ChangeListener l)/选项板注册一个变化监听器(5)工具栏(JToolBar)JToolBar是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口。常用的方法如下:JToolBar(

22、String name)/构造方法getComponentIndex(Component c)/返回一个组件的序号getComponentAtIndex(int i)/得到一个指定序号的组件,9.2.4 Swing其他容器,(6)内部框架(JInternalFrame)JInternalFrame就如同一个窗口在另一个窗口内部。使用实例:JFrame frame=new JFrame(InternalFrameDemo);/实例化窗口JDesktopPane desktop=new JDesktopPane();/实例化容器JDesktopPaneJInternalFrame myframe=

23、new JInternalFrame();/实例化内部窗口desktop.add(myframe);/把内部窗口添加到容器中myframe.setSelected(true);/内部面板是可选择的frame.setContentPane(desktop);/把desktop设为frame的内容面板,9.2.5 案例分析:Swing容器综合实例,1.案例描述建立一个窗口对象,并在其上添加一个标签对象,用来显示对窗口的各种不同操作。在窗口中,单击窗口右上角的关闭窗口按钮时,则弹出对话框,要求用户进一步确认是否要关闭该窗口。,9.2.5 案例分析:Swing容器综合实例,2.案例分析本案例需要创建一

24、个窗口对象,该对象继承自JFrame类,在主窗口中创建一个标签对象。还需创建一个JDialog对象以及两个按钮,JDialog对象的拥有者为已创建的窗口对象。程序运行时将触发两个不同类的事件:一个是当单击窗口右上角的关闭按钮时所触发的WindowEvent事件;另一个是当对话框中的按钮被单击时所触发的ActionEvent事件。故系统需要实现WindowListener接口和ActionListener接口的监听程序。,9.3 常用Swing组件,常用组件:JLabel标签组件JTextField文本框JTextArea文本区 JButton按钮组件 JCheckBox复选框JRadioBut

25、ton单选框 JList列表框组件 JComboBox下拉列表框组件 JMenu菜单组件,9.3.1 JLabel标签组件,JLabel标签为GUI提供文本(主要)或图像(也可以)信息JComponent的子类可以显示以下内容:(1)单行的只读的文本信息(2)图像(3)同时显示文本与图像信息注意:程序一般不修改标签的内容,2.标签的构造方法,JLabel():创建一个没有显示内容的标签对象。JLabel(Icon image):创建一个显示为图标的标签对象,默认为居中排列。JLabel(Icon image,int alignment):创建一个显示为图标的标签对象,并指定其排列方式。排列方式

26、有3种,分别用3个常量LEFT、CENTER和RIGHT表示左、居中和右对齐。JLabel(String text):创建一个显示文字的标签对象,默认为居中排列。JLabel(String text,int alignment):创建一个显示文字为text的标签对象,并指定其排列方式。JLabel(String text,Icon icon,int alignment):创建一个指定文字、图标、排列方式的标签。,3.标签的常用方法,void setText(String label):设置显示的字符串。String getText():返回当前显示的字符串。void setFont(Font

27、f):设置显示的字符串的字体。void setBackground(Color c):设置显示的字符串的背景颜色。void setForeground(Color c):设置显示的字符串的颜色。void setHorizontalAlignment(int alignment):设置标签内容沿 X 轴的对齐方式。int getHorizontalAlignment():返回标签内容沿 X 轴的对齐方式。,综合例子的显示图,标签的代码示例:,ImageIcon img1=new ImageIcon(image/1.jpg);JPanel pn1=new JPanel();JLabel lb1=n

28、ew JLabel(“这是文字标签!);JLabel lb2=new JLabel(这是文字图形标签,img1,JLabel.CENTER);Font fnt=new Font(楷体,Font.BOLD+Font.ITALIC,20);lb1.setFont(fnt);lb1.setForeground(Color.red);pn1.add(lb1);pn1.add(lb2);,9.3.2 JTextField文本框和JTextArea文本区,JTextField文本框显示单行的文本信息继承关系:JTextField extends JTextComponent密码输入框:JPasswordF

29、ieldJTextArea文本区:是一个显示纯文本的多行区域。JTextArea 不管理滚动,可把它放置在 JScrollPane 的ViewPort中实现滚动,如:JTextArea textArea=new JTextArea();JScrollPane area=new JScrollPane(textArea);TextArea 具有换行能力,JTextArea默认为不换行,需设置换行策略:textArea.setLineWrap(true);textArea.setWrapStyleWord(true);,文本框的构造方法,JTextField():创建一个默认宽度的文本框。JTex

30、tField(int columns):创建一个指定宽度的文本框。JTextField(String text):创建一个带有初始文本内容的文本框。JTextField(String text,int columns):创建一个带有初始文本内容并具有指定宽度的文本框。JTextField(Documanet doc,String text,int columns):创建一个以doc为文本存储模型,带有初始文本内容并具有指定宽度的文本框。密码框(JPasswordField)的构造方法同上。,文本区的构造方法,JTextArea():创建一个默认大小的文本区。JTextArea(int rows

31、,int columns):创建一个指定行和列数的文本区。JTextArea(String text):创建一个带有初始文本内容的文本区。JTextArea(String text,int rows,int columns):创建一个带有初始文本内容并具有指定行和列数的文本区JTextArea(Document doc):创建一个文档模型为doc的文本区JTextArea(Document doc,String tex,int rows,int columns):创建一个一个文档模型为doc,且带有初始文本内容并具有指定行和列数的文本区,JTextField、JTextArea常用方法,JTe

32、xtField、JTextArea常用方法:int getColumns():返回文本区(框)的列数。void setColumns(int columns):设定文本区(/框)的列数void setFont(Font f):设置当前字体void setHorizontalAlignment(int alignment):设置文本对齐方式void SetText(String t):设置文本内容void setEditable(boolean b):设定文本区(框)的读写状态。JTextArea常用方法:void append(String str):在文本区尾部添加文本。void inser

33、t(String str,int pos):在文本区指定位置插入文本int getRows():返回文本区的行数。void setRows(int rows):设定文本区行数。,代码示例:,Font fnt=new Font(楷体,Font.BOLD+Font.ITALIC,20);JPanel pn=new JPanel();JTextField tf1=new JTextField(10);JTextField tf2=new JTextField(默认文字);JTextField tf3=new JTextField(不可编辑,15);JPasswordField pwf=new JPa

34、sswordField(password,10);JTextArea ta1=new JTextArea();JTextArea ta2=new JTextArea(文本区2,5,10);/设置文本框格式:tf2.setFont(fnt);tf3.setEditable(false);/设置文本框格式:ta1.setFont(fnt);ta1.setLineWrap(true);ta1.setWrapStyleWord(true);/在面板中添加组件:pn.add(tf1);pn.add(tf2);pn.add(tf3);pn.add(pwf);pn.add(new JScrollPane(t

35、a1);pn.add(new JScrollPane(ta2);,9.3.3 JButton按钮组件,按钮是窗口程序设计中最常用的组件之一,按钮可以带标签或图像。一个按钮对应着一种特定的操作,如确定、保存、取消等用户可以用鼠标单击按钮来控制程序运行的流程。javax.swing类库中提供了JButton类,用来处理按钮控件的相关操作。JButton类继承了AbstractButton类中许多常用方法。在Java中,广义的按钮包括:命令式按钮(JButton)复选框(JCheckBox)单选按钮(JRadioButton),AbstractButton类的常用方法,一个助记符必须对应键盘上的一个

36、键,并且应该使用 java.awt.event.KeyEvent 中定义的 VK_XXX 键代码之一指定。助记符是不区分大小写的,所以具有相应键代码的键事件将造成按钮被激活,不管是否按下 Shift 修饰符。,代码示例:,ImageIcon img1=new ImageIcon(image/1.jpg);ImageIcon img2=new ImageIcon(image/2.jpg);JPanel pn2=new JPanel();JButton btn1=new JButton(按钮1);JButton btn2=new JButton(按钮2,img2);/设置按钮格式:btn1.set

37、Mnemonic(d);btn1.setActionCommand(OK);btn2.setRolloverIcon(img1);/在面板中添加组件:pn.add(btn1);pn.add(btn2);,51,9.3.4 JCheckBox复选框和JRadioButton单选框,JCheckBox复选框:给用户“二选一”的输入选择每个复选框有两种状态:“选中(on)”或“非选中(off)”JRadioButton单选框:给用户“多选一”的输入选择。每个单选框有两种状态:被选择或取消选择。单选框还必须配合ButtonGroup类将其组成单选按钮组来使用用ButtonGroup的 add 方法将

38、JRadioButton 对象包含在此组中在这种情况下用ButtonGroup类管辖的所有的JRadioButton组件中,只能有一个处于被选择状态。,代码示例:,JPanel pn=new JPanel();JLabel label=new JLabel(示例文字);/复选框JCheckBox cb1=new JCheckBox(粗体);JCheckBox cb2=new JCheckBox(斜体);/单选框JRadioButton red=new JRadioButton(red);JRadioButton green=new JRadioButton(green);JRadioButto

39、n blue=new JRadioButton(blue);ButtonGroup grp=new ButtonGroup();cb1.setSelected(true);red.setSelected(true);/把单选框添加到按钮组grp.add(red);grp.add(green);grp.add(blue);/在面板中添加组件:pn.add(label);pn.add(cb1);pn.add(cb2);pn.add(red);pn.add(green);pn.add(blue);,53,9.3.5 JList列表框组件,列表框组件JList:向用户提供“多选多”的输入选择列表框通常

40、列出若干选项,可指定列出选项的数目,超过长度时被折叠起来。列表框中提供了多个文本选项,可以浏览多项。JList类继承自JComponent类。列表框组件的使用:先用JList类的add()方法将选项加入到列表框中然后再利用程序来控制列表框的显示方式。,54,9.3.5 JList列表框组件,public JList():使用空模型构造 JListpublic JList(ListModel dataModel):构造一个列表,用它显示指定模型中的元素。public JList(Object listData):构造一个列表以显示指定数组listData的元素。JList 不支持滚动。要启用滚动

41、,可使用下列代码:JScrollPane myScrollPane=new JScrollPane(lst);,代码示例:,JPanel pn=new JPanel();String data=C语言,Java,离散,英语,网络,数据库;JList lst=new JList(data);/设置JList组件格式:lst.setSelectedIndex(1);lst.setVisibleRowCount(3);lst.setFixedCellHeight(40);lst.setFixedCellWidth(100);String ls=lst.getSelectedValue().toStr

42、ing();JScrollPane jp=new JScrollPane(lst);/在面板中添加组件:pn.add(jp);,56,9.3.6 JComboBox下拉列表框组件,下拉列表框(JComboBox):下拉列表框中所有选项都被折叠收藏起来只会将用户所选择的单个选项显示在显示栏上。要改变被选中的选项,可以单击下拉列表框右边的向下箭头,然后从伸展开的选项框中选择一个选项即可。下拉列表框JComboBox继承自JComponent类,57,JComboBox类的常用方法,代码示例:,JPanel pn=new JPanel();String data=计算机学院,汽车学院,管理学院,外语

43、学院;JComboBox cbx=new JComboBox(data2);/设置JComboBox组件格式:cbx.setSelectedIndex(0);String str2=cbx.getSelectedItem().toString();/在面板中添加组件:pn.add(cbx);,9.3.7 JMenu菜单组件,菜单JMenu:作用:用户用来输入有关操作命令的简便工具。形式:下拉方式或弹出方式菜单组件的组成:(1)菜单条JMenuBar:包含若干个菜单(2)菜单JMenu:包含若干个菜单项(3)菜单项JMenuItem:与按钮相似,在单击时引发一个动作命令,60,9.3.7 JMe

44、nu菜单组件,JMenuBar、JMenu与JMenuItem设置:JMenuBar 是可通过 JFrame、JWindow 的根窗格添加至容器的组件。由多个 JMenu 组成,每个 JMenu 在 JMenubar 中都表示为字符串。JMenu 在 JMenuBar 下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。JMenuItem为JMenu 中的一个组件,以文本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等。,JMenuBar类,JMenuBar类的构造方法,JMenuBar类的常用方法,JMenu类,JMenu类的构造方法,JMenu类的常用方法,

45、JMenuItem类的构造方法,JMenuItem类的常用方法,JCheckBoxMenuItem类,JCheckBoxMenuItem类的构造方法,JMenuBar类的常用方法,67,JFrame jf=new JFrame();JMenuBar mb=new JMenuBar();/创建JMenuBar对象 mbJMenu mn1=new JMenu(颜色);/创建JMenu对象 mn1JMenu mn2=new JMenu(窗口);/创建JMenu对象 mn2JMenuItem mi1=new JMenuItem(红色);/创建JMenuItem对象 mi1JMenuItem mi2=n

46、ew JMenuItem(绿色);JMenuItem mi3=new JMenuItem(关闭);JCheckBoxMenuItem cbmi=new JCheckBoxMenuItem(斜体);/复选框菜单项mb.add(mn1);/将mn1加入mb中mb.add(mn2);mn1.add(mi1);/将mi1加入到mn1中mn1.add(mi2);mn1.addSeparator();/加一分隔线mn1.add(cbmi);/添加带复选框的菜单项mn2.add(mi3);/将mi3加入到mn2中jf.setJMenuBar(mb);,示例:,弹出式菜单类JPopupMenu,弹出式菜单JP

47、opupMenu的定义和使用:,69,9.3.8 案例分析:常用Swing组件综合实例,1.案例描述利用菜单组件、单选/复选框组件和下拉列表框组件,设置文本区中前景颜色、背景颜色和文字的样式。利用选中菜单项的名称设置窗口的标题栏,当选择“关闭”菜单项时,则关闭窗口。当右击文本区组件时,则出现弹出式菜单,选择菜单项也可以设置字体颜色。当单击下拉列表框中的某选项时,将选中的颜色的文字添加到文本框中。,9.3.8 案例分析:常用Swing组件综合实例,2.案例分析需要创建一个JMenuBar对象,三个JMenu对象,四个JMenuItem对象,三个带复选框的菜单项,一个弹出式菜单,将已创建的三个JM

48、enuItem对象用于弹出菜单中。需要处理下拉列表框和复选框的ItemEvent事件、菜单选项的ActionEvent事件以及右击文本区的鼠标事件。需要实现ActionListener接口、ItemListener接口和MouseAdapter接口的监听程序。,演示程序:SwingComp_Exam.java,9.4 GUI布局管理器,布局:一个容器中的各个组件之间的位置和大小关系布局管理器:管理组件在容器中的布局,而不是直接使用位置坐标来设置各个组件的位置和大小。Java提供的6种布局管理器FlowLayout(流式布局管理器)BorderLayout(边界布局管理器)CardLayout(

49、卡片布局管理器)GridLayout(网格布局管理器)GridBagLayout(网格包布局管理器)BoxLayout(盒式布局管理器),注意:对于一些复杂的情况,往往需要使用容器的嵌套,各容器可使用不同的布局。当容器的尺寸改变时,布局管理器会自动调整组件的排列。,9.4.1 FlowLayout流式布局管理器,流式布局(FlowLayout):最基本的一种布局把图形元件以组件的preferredSize一个接一个地显示在面板上,如果一行显示不了所有的组件,会自动换到下一行显示。是Panel、JApplet和JPanel默认的布局管理方式。setLayout()方法是所有容器的父类Contai

50、ner的方法,用于容器设置布局。FlowLayout的构造方法:FlowLayout():生成一个默认的流式布局FlowLayout(int alignment):可以设定每一行组件的对齐方式 FlowLayout(int alignment,int horz,int vert):可以设定组件间的水平和垂直距离,默认值为5个像素,FlowLayout mylayout=new FlowLayout();FlowLayout exLayout=new FlowLayout(FlowLayout.RIGHT);setLayout(exlayout);/为容器设置新布局,73,import java

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号