版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章GUI图形用户界面李慧芬lihf@B1-308第9章GUI图形用户界面李慧芬教学目标了解Swing的体系结构及相关概念掌握Swing组件的特性和分类,了解使用Swing开发GUI程序的步骤掌握常用容器的分类,掌握JFrame、Jpanel的构造方法和常用方法掌握常用Swing组件的构造方法和常用方法了解GUI布局管理器的分类及特点了解事件处理模型的基本概念,掌握事件处理的基本步骤。教学目标了解Swing的体系结构及相关概念本章目录9.1Swing概述9.2Swing容器9.3常用Swing组件9.4GUI布局管理器9.5事件处理模型本章目录9.1Swing概述9.1Swing概述GUI(GraphicUserInterface):用户与计算机之间交互的图形化操作界面,又称为图形用户接口Java语言提供两个处理图形用户界面的类库:java.awt包:AbstractWindowToolKit——抽象窗口工具包java.swing包:在AWT基础上构建的一套新的图形界面系统Awt与Swing的区别:Awt:Java处理图形用户界面的初始途径。重量级组件,把图形元素的创建和行为交给目标平台上的本地GUI工具箱进行处理。理论上“一次编写,随处运行”,实际上“一次编写,随处调试”Swing:是JFC(FoundationClasses)的一部分,轻量级组件,显示界面与本机OS无关,100%的纯Java实现。9.1Swing概述GUI(GraphicUserI1、Swing体系结构Swing是在AWT的基础上构建的图形界面系统。以AWT为基础,提供了AWT中的所有功能进行了扩充,提供了许多新的图形界面组件。JFCJFCAWTSwingAWTComponentsButtonFrameScrollBar…WindowsFontDialogColorFrameGraphicsAWTEventToolKitJava2DDragandDropAccessibility1、Swing体系结构Swing是在AWT的基础上构建的图形9.1Swing概述GUI设计三个概念:组件(Component):Java的图形用户界面的最基本组成部分。可以以图形化的方式显示在屏幕上并能与用户进行交互的对象。例如一个按钮,一个标签等。必须将组件放在一定的容器中才可以显示出来。容器(Container):本身也是一个组件。主要功能是容纳其他组件和容器。布局管理器(LayoutManager):每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器。9.1Swing概述GUI设计三个概念:7java.lang.Objectjava.awt.Componentjava.awt.Containerjava.awt.Paneljava.awt.Windowjava.applet.AppletJAppletjavax.swing.JComponentjava.awt.Dialogjava.awt.FrameJDialogJFrameJWindowSwing组件注意:Component类是一个抽象类,不能直接使用。类结构7java.lang.Objectjava.awt.CompSwing的组件JComponentAbstractButtonJbuttonJMenuItemJCheckBoxMenuItemJMenuJToggleButtonJCheckBoxJRadioButtonJComboBoxJLabelJListJMenuBarJpanelJPopupMenuJScollBarJScollPaneJTextComponentJEditorPaneJTextAreaJTextFieldSwing与AWT相似的组件JcomponentJColorChooserJFileChooserJInternalFrameJLayeredPaneJDesktopPaneJOptionPaneJProgramBarJRootPaneJseparatorJPopupMenu.SeparatorJToolBar.SeparatorJsliderJSplitPaneJTabbedPaneJtableJToolBarJToolTipJtreeJViewPortSwing比AWT增加的组件Swing的组件JComponentAbstractButt2、Swing组件的特性Swing组件的特性MVC体系结构:每个组件有对应的model类管理数据每个组件有相关的分离模型和界面可存取性支持:实现了Accessible接口支持键盘操作设置边框使用图标2、Swing组件的特性Swing组件的特性9.1Swing概述Swing组件的分类(1)顶层容器:JFrame,JApplet,JDialog,JWindow共4个。(2)中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。(3)特殊容器:在GUI上起特殊作用的中间层,如JInternalJFrame,JLayeredPane,JRootPane等。(4)基本控件:实现人机交互的组件,如Jbutton,JComboBox,JList,JMenu,JSlider,JTextField等。(5)不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel,JProgressBar,ToolTip等。(6)可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser,JFileChoose,JFileChooser,JTable,JTextArea等。9.1Swing概述Swing组件的分类9.1Swing概述使用Swing的基本规则Swing组件不能直接添加到顶层容器中,必须添加到一个与Swing顶层容器相关联的内容面板上。(1)把Swing组件放入一个顶层Swing容器的内容面板上(2)避免使用非Swing的重量级组件。9.1Swing概述使用Swing的基本规则9.1Swing概述对JFrame添加组件有两种方式:(1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)(2)建立一个JPanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:
JPanelcontentPane=newJPanel();
……//把其它组件添加到Jpanel中;
frame.setContentPane(contentPane);
//把contentPane对象设置成为frame的内容面板9.1Swing概述对JFrame添加组件有两种方式:9.1Swing概述Swing程序设计流程(1)引入swing包(2)选择"外观和感觉"(3)设置顶层容器(4)设置按钮和标签(5)向容器中添加组件(6)在组件周围添加边界(7)进行事件处理9.1Swing概述Swing程序设计流程9.2Swing容器容器java.awt.Container是Component的子类,一个容器可以容纳多个组件,并使它们成为一个整体。Java程序界面的构成:一个顶层容器(即主窗口)顶层容器包含若干个中间容器每个中间容器包含若干个基本组件按照合理的布局方式将它们组织在一起基本组件可响应发生在其上的事件9.2Swing容器容器java.awt.Contain9.2Swing容器Swing常用的顶层容器有JFrame:用来创建application,最常用的JApplet:用来创建appletJDialog:用来创建对话框,常用JWindow:不常用9.2Swing容器Swing常用的顶层容器有9.2Swing容器中间容器JPanel,JScrollPane,JSplitPane,JTabbedPane、JInternalFrame:这些容器提供将有关组件按照某种布局组合在一起,然后放入中间容器或顶层容器的功能JPanel:提供一个面板JScrollPane:是具有滚动条的窗格JSplitPane:是具有拆分功能的窗格JTabbedPane:是带有若干标签的分类窗格JInternalFrame:用于创建内嵌于JFrame中的内部框架Box:提供创建横向/纵向盒子容器的功能9.2Swing容器中间容器9.2.1JFrame框架类JFrame是java.awt.Frame的子类JFrame上只能有一个唯一的组件JRootPane调用JFrame.getContentPane()方法可获得JFrame中内置的JRootPane对象。程序不能直接在JFrame实例对象上增加组件和设置布局管理器,应在JRootPane对象上增加组件和设置布局。Jframe的setDefaultCloseOperation方法可以设置单击关闭按钮时的事件处理方式。9.2.1JFrame框架类JFrame是java.9.2.1JFrame框架9.2.1JFrame框架199.2.1JFrame框架常用构造方法:JFrame():创建无标题窗口。JFrame(Strings):创建标题名字是字符串s的窗口例如:JFramef=newJFrame(“Hello”);setDefaultCloseOperation方法:设置单击窗口上的关闭按钮时的事件处理方式。JFrame.DO_NOTHING_ON_CLOSEJFrame.HIDE_ON_CLOSEJFrame.DISPOSE_ON_CLOSEJFrame.EXIT_ON_CLOSE199.2.1JFrame框架常用构造方法:JFrame类的常用方法:方法功能说明JMenuBargetJMenuBar()返回窗体上设置的菜单栏voidsetJMenuBar(JMenuBarmb)设置窗体的菜单栏intgetDefaultCloseOperation()返回“close”窗体时执行的操作voidsetDefultCloseOperation(intoperation)设置“close”窗体时默认执行的操作voidremove(Componentcomp)从容器中移除指定的组件voidsetContentPane(ContainerconPane)设置contentPane的属性ContainergetCantentPane()返回此窗体的contentPane对象JRootPanegetRootPane()返回此窗体的rootPane对象voidsetTtile(Stringtitle)设置或修改框架的标题StringgetTitle()返回框架的标题voidsetBackground(Colorc)设置框架的背景颜色booleanisResizable()判断窗口是否可以调节大小JFrame类的常用方法:方法功能说明JMenu方法功能说明Componentadd(Componentcomp)在容器中添加一个组件compvoidsetLayout(LayoutManager
mgr)设置组件容器,使用mgr页面布局设置voidsetFont(Fontf)设置组件容器的字体voidremove(Componentcomp)删除容器组件里指定的组件voidpaint(Graphicsg)重绘容器组件voidpaintComponents(Graphicsg)重绘容器组件里的所有组件voidremoveAll()从容器中移除所有组件voidremove(intindex)从容器中移除index指定的组件容器类Container的常用方法方法功能说明Componentadd(Component方法功能说明voidsetBounds(intx,inty,intw,inth)以(x,y)为对象的左上角,以w为宽,以h为高设置对象的显示区域voidsetBackground(Colorc)设置对象的背景色为cvoidsetSize(intwidth,intheight)设置对象的大小voidsetFont(Fontfont)设置对象的字体样式为fontvoidsetForeground(Colorcolor)设置对象的前景色为colorvoidsetVisible(Booleanb)设置组件是否显示voidsetLocation(intx,inty)设置组件显示位置的左上角坐标为(x,y)StringgetName()返回对象的名称组件类Component的常用方法方法功能说明voidsetBounds(intx,in例子-创建框架窗口importjava.awt.*;importjavax.swing.*;publicclassJFrame_ExamextendsJFrame{publicstaticvoidmain(String[]args){
JFrame_ExammainJFrame=newJFrame_Exam();
mainJFrame.setTitle
("JFrame框架示例!“);mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);mainJFrame.setSize(300,300);mainJFrame.setLocationRelativeTo(null);mainJFrame.getContentPane().setLayout(newFlowLayout());mainJFrame.getContentPane().setBackground(Color.green);JLabellbl=newJLabel("大家好,我是一个标签");JButtonbtn=newJButton("按钮");
mainJFrame.getContentPane().add(lbl);mainJFrame.getContentPane().add(btn);
mainJFrame.setVisible(true);
}}例子-创建框架窗口importjava.awt.*;9.2.2JPanel面板面板(JPanel)轻量级容器组件没有标题的中间容器,实现容器的嵌套。默认布局管理器是FlowLayout这类容器不能独立存在,必须通过add()方法添加到一个顶层容器或存在于顶层容器的一个中间容器。面板(JPanel)的大小由它所包含的组件决定当组件个数增加,面板(JPanel)也会随之而增大9.2.2JPanel面板面板(JPanel)9.2.2Jpanel面板JPannel类的构造方法:publicJPanel();publicJPanel(booleanisDoubleBuffered);publicJPanel(LayoutManagerlayout);publicJPanel(LayoutManagerlayout,booleanisDoubleBuffered)9.2.2Jpanel面板JPannel类的构造方法:方法功能说明voidsetAlignmentX(floatalignmentX)设置垂直对齐方式voidsetAlignmentY(floatalignmentY)设置水平对齐方式voidsetBorder(Borderborder)设置组件的边框voidsetBackground(Colorc)设置组件的背景色voidsetFont(Fontfont)设置组件的字体样式voidsetForeground(Colorcolor)设置组件的前景色voidsetVisible(booleanb)设置组件是否显示voidsetMaximumSize(Dimensionsize)设置组件的最大大小voidsetMinimumSize(Dimensionsize)设置组件的最小大小voidsetEnabled(booleanenabled)设置是否启用此组件JComponent类的常用方法方法功能说明voidsetAlignmentX(floatimportjava.awt.*;importjavax.swing.*;publicclassJPanel_Exam{
publicstaticvoidmain(Stringargs[]){
JFramemainJFrame=newJFrame("框架+面板示例!");
mainJFrame.setSize(240,240); mainJFrame.setLocation(200,200);
Container
container=mainJFrame.getContentPane();
container.setBackground(Color.lightGray); container.setLayout(null);
JPanelpnl=newJPanel();
pnl.setSize(190,180);
pnl.setBackground(Color.green);
pnl.setLocation(20,20);
JButtonbtn=newJButton("我是一个按钮,点击我"); btn.setSize(170,40);
btn.setBackground(Color.yellow);
btn.setLocation(10,50);
pnl.setLayout(null);//取消pnl的默认布局管理器
pnl.add(btn);//将命令按钮btn加入到面板pnl中
container.add(pnl);//将面板pnl加入到窗口默认面板中
mainJFrame.setVisible(true);}}例子:importjava.awt.*;例子:9.2.3JDialog对话框JDialog组件(对话窗口)作用:用来显示提示信息或接收用户输入。特点:没有最小化按钮、状态等控制元素。对话框一般都对应于一个顶层窗口,如JFrame窗口。对话框模式分类:有模式:在运行期间不允许用户同应用程序的其他窗口进行交互。通常情况下,程序要在处理完对话框中的数据后才能进行下一步工作,因此,有模式的对话框应用较多。无模式:允许用户同时在该对话框和程序其他窗口中切换操作。9.2.3JDialog对话框JDialog组件(对话构造方法功能说明publicJDialog()
创建一个没有标题并且没有指定Frame
所有者的无模式对话框publicJDialog(Dialogowner)创建无模式对话框,指定其拥有者为另一个对话框ownerpublicJDialog(Dialogowner,Stringtitle)创建一个拥有者为对话框owner,标题为title的对话框publicJDialog(Dialogowner,Stringtitle,booleanmodal)创建一个拥有者为对话框owner,标题为title的对话框,其模式状态由modal来指定publicJDialog(Frameowner)创建无模式对话框,指定其拥有者为窗口ownerpublicJDialog(Frameowner,booleanmodal)创建一个拥有者为窗口owner的对话框,其模式状态由modal来指定publicJDialog(Frameowner,Stringtitle)创建一个标题为title,拥有者为窗口owner的对话框publicJDialog(Frameowner,Stringtitle,booleanmodal)创建一个标题为title,拥有者为一个窗口的对话框,其模式状态由modal来指定JDialog类的构造方法构造方法功能说明publicJDialog()
创建一个没方法功能说明public
JMenuBar
getJMenuBar()返回此对话框上设置的菜单栏publicContainergetContentPane()返回此对话框的contentPane对象public
voidsetContentPane(Container
contentPane)设置contentPane属性public
intgetDefaultCloseOperation()对话框"close"时所执行的操作publicvoidsetDefaultCloseOperation(int
operation)设置当用户在此对话框上发起"close"时默认执行的操作publicvoidsetTitle(Stringtitle)将对话框标题设置为titlepublicvoidsetModal(booleanb)设置对话框是否为模式状态publicbooleanisModal()测试对话框是否为模式状态publicvoidsetResizable(booleanresizable)设置对话框是否可改变大小publicbooleanisResizable()测试对话框是否可改变大小publicvoidsetVisible(booleanb)设置对话框是否显示publicvoiddispose()撤销对话框对象JDialog类的常用方法方法功能说明public
JMenuBargetJMeimportjava.awt.*;importjavax.swing.*;publicclassTestJDialog{publicstaticvoidmain(String[]args){
JFramemFrame=newJFrame("这个一个主框架");
mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mFrame.setSize(300,300);
mFrame.setLocationRelativeTo(null);
JDialogjd=newJDialog(mainJFrame);
jd.setTitle("这是一个对话框");
jd.setSize(200,200);
jd.setLocationRelativeTo(null);
jd.setVisible(true);
jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
mFrame.setVisible(true); }}例子:importjava.awt.*;例子:9.2.4Swing其他容器(1)分层面板(JLayeredPane)Swing提供两种分层面板:JLayeredPane和JDesktopPane。JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置。向一个分层面板中添加组件,需要说明将其加入哪一层,指明组件在该层中的位置,语法为:
add(Componentc,IntegerLayer,intposition)(2)滚动窗口(JScrollPane)主要通过移动JViewport(视口)来实现。滚动条实际就是沿着组件移动视口,同时描绘出它在下面“看到”的内容9.2.4Swing其他容器(1)分层面板(JLay9.2.4Swing其他容器(3)分隔板(JSplitPane)JSplitPane提供可拆分窗口。支持水平拆分(JSplitPane.HORIZONTAL_SPLIT)和垂直(JSplitPane.VERTICAL_SPLIT)拆分并带有滑动条。常用方法有:JSplitPane(int
newOrientation,Component
newLeftComponent,Component
newRightComponent)
//
创建一个具有指定方向和指定组件的新JSplitPane。addImpl(Componentcomp,Objectconstraints,intindex)//增加指定的组件
setTopComponent(Componentcomp)//设置顶部的组件
setDividerSize(intnewSize)//设置拆分的大小
setUI(SplitPaneUIui)//设置外观和感觉9.2.4Swing其他容器(3)分隔板(JSpli9.2.4Swing其他容器(4)选项板(JTabbedPane)JTabbedPane提供一组可供用户选择的带有标签或图标的开关键。常用的方法如下:add(Stringtitle,Componentcomponent)//增加一个带特定标签的组件addChangeListener(ChangeListenerl)//选项板注册一个变化监听器(5)工具栏(JToolBar)JToolBar是用于显示常用工具控件的容器。用户可以拖拽出一个独立的可显示工具控件的窗口。常用的方法如下:JToolBar(Stringname)//构造方法getComponentIndex(Componentc)//返回一个组件的序号getComponentAtIndex(inti)//得到一个指定序号的组件9.2.4Swing其他容器(4)选项板(JTabb9.2.4Swing其他容器(6)内部框架(JInternalFrame)JInternalFrame就如同一个窗口在另一个窗口内部。使用实例:JFrameframe=newJFrame("InternalFrameDemo");//实例化窗口JDesktopPanedesktop=newJDesktopPane();//实例化容器JDesktopPaneJInternalFramemyframe=newJInternalFrame();//实例化内部窗口desktop.add(myframe);//把内部窗口添加到容器中myframe.setSelected(true);//内部面板是可选择的frame.setContentPane(desktop);//把desktop设为frame的内容面板9.2.4Swing其他容器(6)内部框架(JInt9.2.5案例分析:Swing容器综合实例1.案例描述建立一个窗口对象,并在其上添加一个标签对象,用来显示对窗口的各种不同操作。在窗口中,单击窗口右上角的关闭窗口按钮时,则弹出对话框,要求用户进一步确认是否要关闭该窗口。9.2.5案例分析:Swing容器综合实例1.案例描述9.2.5案例分析:Swing容器综合实例2.案例分析本案例需要创建一个窗口对象,该对象继承自JFrame类,在主窗口中创建一个标签对象。还需创建一个JDialog对象以及两个按钮,JDialog对象的拥有者为已创建的窗口对象。程序运行时将触发两个不同类的事件:一个是当单击窗口右上角的关闭按钮时所触发的WindowEvent事件;另一个是当对话框中的按钮被单击时所触发的ActionEvent事件。故系统需要实现WindowListener接口和ActionListener接口的监听程序。9.2.5案例分析:Swing容器综合实例2.案例分析9.3常用Swing组件常用组件:JLabel标签组件JTextField文本框JTextArea文本区JButton按钮组件JCheckBox复选框JRadioButton单选框JList列表框组件JComboBox下拉列表框组件JMenu菜单组件9.3常用Swing组件常用组件:9.3.1JLabel标签组件JLabel标签为GUI提供文本(主要)或图像(也可以)信息JComponent的子类可以显示以下内容:(1)单行的只读的文本信息(2)图像(3)同时显示文本与图像信息注意:程序一般不修改标签的内容9.3.1JLabel标签组件JLabel标签2.标签的构造方法JLabel():创建一个没有显示内容的标签对象。JLabel(Iconimage):创建一个显示为图标的标签对象,默认为居中排列。JLabel(Iconimage,intalignment):创建一个显示为图标的标签对象,并指定其排列方式。排列方式有3种,分别用3个常量LEFT、CENTER和RIGHT表示左、居中和右对齐。JLabel(Stringtext):创建一个显示文字的标签对象,默认为居中排列。JLabel(Stringtext,intalignment):创建一个显示文字为text的标签对象,并指定其排列方式。JLabel(Stringtext,Iconicon,intalignment):创建一个指定文字、图标、排列方式的标签。2.标签的构造方法JLabel():创建一个没有显示内3.标签的常用方法voidsetText(Stringlabel):
设置显示的字符串。StringgetText():返回当前显示的字符串。voidsetFont(Fontf):设置显示的字符串的字体。voidsetBackground(Colorc):设置显示的字符串的背景颜色。voidsetForeground(Colorc):设置显示的字符串的颜色。voidsetHorizontalAlignment(intalignment):设置标签内容沿X轴的对齐方式。intgetHorizontalAlignment():返回标签内容沿X轴的对齐方式。综合例子的显示图3.标签的常用方法voidsetText(Stringl标签的代码示例:ImageIconimg1=newImageIcon("image/1.jpg");JPanelpn1=newJPanel();JLabellb1=newJLabel(“这是文字标签!");JLabellb2=newJLabel("这是文字图形标签",img1,JLabel.CENTER);Fontfnt=newFont("楷体",Font.BOLD+Font.ITALIC,20);lb1.setFont(fnt);lb1.setForeground(Color.red);pn1.add(lb1);pn1.add(lb2);标签的代码示例:ImageIconimg1=newIma9.3.2JTextField文本框和JTextArea文本区JTextField文本框显示单行的文本信息继承关系:JTextFieldextendsJTextComponent密码输入框:JPasswordFieldJTextArea文本区:是一个显示纯文本的多行区域。JTextArea不管理滚动,可把它放置在JScrollPane的ViewPort中实现滚动,如:JTextAreatextArea=newJTextArea();
JScrollPanearea=newJScrollPane(textArea);TextArea具有换行能力,JTextArea默认为不换行,需设置换行策略:
textArea.setLineWrap(true);textArea.setWrapStyleWord(true);9.3.2JTextField文本框和JTextArea文本框的构造方法JTextField():创建一个默认宽度的文本框。JTextField(intcolumns):
创建一个指定宽度的文本框。JTextField(Stringtext):创建一个带有初始文本内容的文本框。JTextField(Stringtext,intcolumns):创建一个带有初始文本内容并具有指定宽度的文本框。JTextField(Documanetdoc,Stringtext,intcolumns):创建一个以doc为文本存储模型,带有初始文本内容并具有指定宽度的文本框。密码框(JPasswordField)的构造方法同上。文本框的构造方法JTextField():创建一个默认宽度文本区的构造方法JTextArea():创建一个默认大小的文本区。JTextArea(introws,intcolumns):
创建一个指定行和列数的文本区。JTextArea(Stringtext):创建一个带有初始文本内容的文本区。JTextArea(Stringtext,introws,intcolumns):创建一个带有初始文本内容并具有指定行和列数的文本区JTextArea(Documentdoc):创建一个文档模型为doc的文本区JTextArea(Documentdoc,Stringtex,introws,intcolumns):创建一个一个文档模型为doc,且带有初始文本内容并具有指定行和列数的文本区文本区的构造方法JTextArea():创建一个默认大小的JTextField、JTextArea常用方法JTextField、JTextArea常用方法:intgetColumns():返回文本区(框)的列数。voidsetColumns(intcolumns):设定文本区(/框)的列数voidsetFont(Fontf):设置当前字体voidsetHorizontalAlignment(intalignment):设置文本对齐方式voidSetText(Stringt):设置文本内容voidsetEditable(booleanb):设定文本区(框)的读写状态。JTextArea常用方法:voidappend(Stringstr):在文本区尾部添加文本。voidinsert(Stringstr,intpos):在文本区指定位置插入文本intgetRows():返回文本区的行数。voidsetRows(introws):
设定文本区行数。JTextField、JTextArea常用方法JTextF代码示例:Fontfnt=newFont("楷体",Font.BOLD+Font.ITALIC,20);JPanelpn=newJPanel();JTextFieldtf1=newJTextField(10);JTextFieldtf2=newJTextField("默认文字");JTextFieldtf3=newJTextField("不可编辑",15);JPasswordFieldpwf=newJPasswordField("password",10);JTextAreata1=newJTextArea();JTextAreata2=newJTextArea("文本区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(newJScrollPane(ta1)); pn.add(newJScrollPane(ta2));代码示例:Fontfnt=newFont("楷体",9.3.3
JButton按钮组件按钮是窗口程序设计中最常用的组件之一,按钮可以带标签或图像。一个按钮对应着一种特定的操作,如确定、保存、取消等用户可以用鼠标单击按钮来控制程序运行的流程。javax.swing类库中提供了JButton类,用来处理按钮控件的相关操作。JButton类继承了AbstractButton类中许多常用方法。在Java中,广义的按钮包括:命令式按钮(JButton)复选框(JCheckBox)单选按钮(JRadioButton)9.3.3JButton按钮组件按钮是窗口程序设计中最AbstractButton类的常用方法方法功能说明publicvoidaddActionListener(ActionListener
l)将一个ActionListener添加到按钮中public
voidaddChangeListener(ChangeListener
l)向按钮添加一个ChangeListenerpublicvoidaddItemListener(ItemListener
l)将一个ItemListener添加到复选框中publicintgetHorizontalAlignment()返回图标和文本的水平对齐方式publicintgetHorizontalTextPosition()返回文本相对于图标的横向位置public
intgetVerticalAlignment()返回文本和图标的垂直对齐方式public
intgetVerticalTextPosition()返回文本相对于图标的纵向位置publicIcongetIcon()返回默认图标publicvoidsetIcon(Icon
defaultIcon)设置按钮的默认图标publicintgetMnemonic()返回当前模型中的键盘助记符publicvoidsetMnemonic(int
mnemonic)设置按钮的助记符publicvoidsetActionCommand(String
actionCommand)设置此按钮的动作命令publicStringgetText()返回按钮的文本publicvoidsetText(String
text)设置按钮的文本publicbooleanisSelected()返回按钮的状态publicvoidsetEnabled(boolean
b)启用(或禁用)按钮一个助记符必须对应键盘上的一个键,并且应该使用java.awt.event.KeyEvent中定义的VK_XXX键代码之一指定。助记符是不区分大小写的,所以具有相应键代码的键事件将造成按钮被激活,不管是否按下Shift修饰符。AbstractButton类的常用方法方法功能说明publ代码示例:ImageIconimg1=newImageIcon("image/1.jpg");ImageIconimg2=newImageIcon("image/2.jpg");JPanelpn2=newJPanel();JButtonbtn1=newJButton("按钮1");JButtonbtn2=newJButton("按钮2",img2);//设置按钮格式:btn1.setMnemonic('d');btn1.setActionCommand("OK");btn2.setRolloverIcon(img1);//在面板中添加组件:pn.add(btn1);pn.add(btn2);代码示例:ImageIconimg1=newImageI519.3.4JCheckBox复选框和JRadioButton单选框JCheckBox复选框:给用户“二选一”的输入选择每个复选框有两种状态:“选中(on)”或“非选中(off)”JRadioButton单选框:给用户“多选一”的输入选择。每个单选框有两种状态:被选择或取消选择。单选框还必须配合ButtonGroup类将其组成单选按钮组来使用用ButtonGroup的add方法将JRadioButton对象包含在此组中在这种情况下用ButtonGroup类管辖的所有的JRadioButton组件中,只能有一个处于被选择状态。519.3.4JCheckBox复选框和JRadioBu代码示例:JPanelpn=newJPanel();JLabellabel=newJLabel("示例文字");//复选框JCheckBoxcb1=newJCheckBox("粗体");JCheckBoxcb2=newJCheckBox("斜体");//单选框JRadioButtonred=newJRadioButton("red");JRadioButtongreen=newJRadioButton("green");JRadioButtonblue=newJRadioButton("blue");ButtonGroupgrp=newButtonGroup();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);代码示例:JPanelpn=newJPanel();539.3.5JList列表框组件
列表框组件JList:向用户提供“多选多”的输入选择列表框通常列出若干选项,可指定列出选项的数目,超过长度时被折叠起来。列表框中提供了多个文本选项,可以浏览多项。JList类继承自JComponent类。列表框组件的使用:先用JList类的add()方法将选项加入到列表框中然后再利用程序来控制列表框的显示方式。539.3.5JList列表框组件列表框组件JLis549.3.5JList列表框组件publicJList():使用空模型构造JListpublicJList(ListModeldataModel):构造一个列表,用它显示指定模型中的元素。publicJList(Object[]listData):构造一个列表以显示指定数组listData的元素。JList不支持滚动。要启用滚动,可使用下列代码:JScrollPanemyScrollPane=newJScrollPane(lst);
549.3.5JList列表框组件publicJL代码示例:JPanelpn=newJPanel();String[]data={"C语言","Java","离散","英语","网络","数据库"};JListlst=newJList(data);//设置JList组件格式:lst.setSelectedIndex(1);lst.setVisibleRowCount(3);lst.setFixedCellHeight(40);lst.setFixedCellWidth(100);Stringls=lst.getSelectedValue().toString();JScrollPanejp=newJScrollPane(lst);//在面板中添加组件:pn.add(jp);代码示例:JPanelpn=newJPanel();569.3.6JComboBox下拉列表框组件下拉列表框(JComboBox):下拉列表框中所有选项都被折叠收藏起来只会将用户所选择的单个选项显示在显示栏上。要改变被选中的选项,可以单击下拉列表框右边的向下箭头,然后从伸展开的选项框中选择一个选项即可。下拉列表框JComboBox继承自JComponent类569.3.6JComboBox下拉列表框组件下拉列表框57方法功能说明voidaddActionListener(ActionListener
l)添加ActionListenervoidaddItem(Object
anObject)为项列表添加项voidaddItemListener(ItemListener
aListener)为该下拉列表框指定一item事件监听者voidaddJPopupMenuListener(JPopupMenuListener
l)添加JPopupMenu侦听器,该侦听器将侦听来自组合框弹出部分的通知消息ObjectgetItemAt(int
index)返回指定索引处的列表项intgetItemCount()返回列表中的项数intgetSelectedIndex()返回列表中与给定项匹配的第一个选项ObjectgetSelectedItem()返回下拉列表框中被选中项目的名称voidinsertItemAt(Object
anObject,int
index)在项列表中的给定索引处插入项voidremoveAllItems()从项列表中移除所有项voidremoveItem(Object
anObject)从项列表中移除项voidremoveItemAt(int
anIndex)移除anIndex
处的项JComboBox类的常用方法57方法功能说明voidaddActionListener代码示例:JPanelpn=newJPanel();String[]data={"计算机学院","汽车学院","管理学院","外语学院"};JComboBoxcbx=newJComboBox(data2);//设置JComboBox组件格式:cbx.setSelectedIndex(0);Stringstr2=cbx.getSelectedItem().toString();//在面板中添加组件:pn.add(cbx);代码示例:JPanelpn=newJPanel();9.3.7JMenu菜单组件菜单JMenu:作用:用户用来输入有关操作命令的简便工具。形式:下拉方式或弹出方式菜单组件的组成:(1)菜单条JMenuBar:包含若干个菜单(2)菜单JMenu:包含若干个菜单项(3)菜单项JMenuItem:与按钮相似,在单击时引发一个动作命令9.3.7JMenu菜单组件菜单JMenu:609.3.7JMenu菜单组件JMenuBar、JMenu与JMenuItem设置:JMenuBar是可通过JFrame、JWindow的根窗格添加至容器的组件。由多个JMenu组成,每个JMenu在JMenubar中都表示为字符串。JMenu在JMenuBar下以文本字符串形式显示,而在用户单击它时,则以弹出式菜单显示。JMenuItem为JMenu中的一个组件,以文本字符串形式显示,可以具有图标,外观可以修改,如字体、颜色、背景、边框等。609.3.7JMenu菜单组件JMenuBar、JMeJMenuBar类JMenuBar类的构造方法构造方法功能说明publicJMenuBar()创建菜单条对象JMenuBar类的常用方法方法功能说明publicJMenuadd(JMenum)将JMenu对象m添加到菜单条JMenuBar中publicJMenu
getMenu(inti)返回位置i的JMenu对象publicintgetMenuCount()返回JMenuBar中JMenu对象的总数publicvoidsetHelpMenu(JMenu
menu)设置用户的帮助菜单JMenuBar类JMenuBar类的构造方法构造方法功能说JMenu类JMenu类的构造方法构造方法功能说明publicJMenu()创建菜单对象publicJMenu(Action
a)创建一个从提供的Action获取其属性的菜单publicJMenu(String
s)创建一个新JMenu,用提供的字符串作为其文本publicJMenu(String
s,boolean
b)创建一个新JMenu,用提供的字符串作为其文本并指定其是否为分离式(tear-off)菜单JMenu类JMenu类的构造方法构造方法功能说明publi方法功能说明publicJMenuItemadd(JMenuItemmi)添加JMenuItem对象mi到菜单JMenu中publicvoidadd(Stringlabel)添加标题为label的JMenuItem到JMenu中publicvoidaddSeparator()在当前位置增加一行分隔线publicJMenuItem
getItem(intindex)返回index位置的JMenuItem对象publicintgetItemCount()返回JMenu中JMenuItem对象的总数publicvoidinsert(JMenuItem
mi,intindex)在index位置上插入一个JMenuItem对象mipublicvoidinsert(Stringlabel,intindex)在index位置插入标题为label的JMenuItem对象publicvoidinsertSeparator(intindex)在index位置插入一行分隔线publicvoidremove(intindex)删除index位置上的JMenuItem对象publicvoidremove(JMenuItemitem)从JMenu中删除指定的JMenuItem对象itempublicvoidremoveAll()在JMenu中删除所有的JMenuItem对象JMenu类的常用方法方法功能说明publicJMenuItemadd(JMe构造方法功能说明publicJMenuItem()创建菜单项对象publicJMenuItem(Action
a)创建一个从指定的Action获取其属性的菜单项publicJMenuItem(Icon
icon)创建带有指定图标的JMenuItempublicJMenuItem(String
text)创建带有指定文本的JMenuItempublicJMenuItem(String
text,Icon
icon)创建带有指定文本和图标的JMenuItempublicJMenuItem(String
text,int
mnemonic)创建带有指定文本和键盘助记符的JMenuItemJMenuItem类的构造方法构造方法功能说明publicJMenuItem()创建菜单方法功能说明publicvoidaddMenuDragMouseListener(MenuDragMouseListener
l)将MenuDragMouseListener
添加到菜单项publicvoidaddMenuKeyListener(MenuKeyListener
l)将MenuKeyListener添加到菜单项publicStringgetJLabel()返回JMenuItem的标题publicvoidsetEnabled(Booleanb)设置JMenuItem是否可被使用
publicvoidmenuSelectionChanged(boolean
isIncluded)当选择或取消选择MenuElement
时由MenuSelectionManager
调用JMenuItem类的常用方法方法功能说明publicvoidaddMenuDragMJCheckBoxMenuItem类JCheckBoxMenuItem类的构造方法构造方法功能说明publicJCheckBoxMenuItem()创建JCheckBoxMenu对象publicJCheckBoxMenuItem()创建JCheckBoxMenu对象JMenuBar类的常用方法方法功能说明publicJMenuadd(JMenum)将JMenu对象m添加到菜单条JMenuBar中publicJMenu
getMenu(inti)返回位置i的JMenu对象publicintgetMenuCount()返回JMenuBar中JMenu对象的总数publicvoidsetHelpMenu(JMenu
menu)设置用户的帮助菜单JCheckBoxMenuItem类JCheckBoxMen67JFramejf=newJFrame();JMenuBarmb=newJMenuBar();//创建JMenuBar对象mbJMenumn1=newJMenu("颜色");//创建JMenu对象mn1JMenumn2=newJMenu("窗口");//创建JMenu对象mn2JMenuItemmi1=newJMenuItem("红色");//创建JMenuItem对象mi1JMenuItemmi2=newJMenuItem("绿色");JMenuItemmi3=newJMenuItem("关闭");JCheckBoxMenuItemcbmi=newJCheckBoxMenuItem("斜体");//复选框菜单项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);示例:67JFramejf=newJFrame();示例:弹出式菜单类JPopupMenu弹出式菜单JPopupMenu的定义和使用:方法用途publicJMenuItemadd(JMenuItem
menuItem)将指定菜单项附加至菜单末尾publicJMenuItemadd(Strings)使用指定文本新建菜单项,并将其添加至菜单末尾publicvoidshow(Componentc,intx,inty)在组件c的坐标(x,y)位置显示弹出式菜单publicbooleanisPopupTrigger()确定鼠标事件是否为平台的弹出触发器弹出式菜单类JPopupMenu弹出式菜单JPopupMen699.3.8案例分析:常用Swing组件综合实例1.案例描述利用菜单组件、单选/复选框组件和下拉列表框组件,设置文本区中前景颜色、背景颜色和文字的样式。利用选中菜单项的名称设置窗口的标题栏,当选择“关闭”菜单项时,则关闭窗口。当右击文本区组件时,则出现弹出式菜单,选择菜单项也可以设置字体颜色。当单击下拉列表框中的某选项时,将选中的颜色的文字添加到文本框中。699.3.8案例分析:常用Swing组件综合实例1.案9.3.8案例分析:常用Swing组件综合实例2.案例分析需要创建一个JMenuBar对象,三个JMenu对象,四个JMenuItem对象,三个带复选框的菜单项,一个弹出式菜单,将已创建的三个JMenuItem对象用于弹出菜单中。需要处理下拉列表框和复选框的ItemEvent事件、菜单选项的ActionEvent事件以及右击文本区的鼠标事件。需要实现ActionListener接口、ItemListener接口和MouseAdapter接口的监听程序。演示程序:SwingComp_Exam.java9.3.8案例分析:常用Swing组件综合实例2.案例分9.4GUI布局管理器布局:一个容器中的各个组件之间的位置和大小关系布局管理器:管理组件在容器中的布局,而不是直接使用位置坐标来设置各个组件的位置和大小。Java提供的6种布局管理器FlowLayout(流式布局管理器)BorderLayout(边界布局管理器)CardLayout(卡片布局管理器)GridLayout(网格布局管理器)GridBagLayout(网格包布局管理器)BoxLayout(盒式布局管理器)注意:对于一些复杂的情况,往往需要使用容器的嵌套,各容器可使用不同的布局。当容器的尺寸改变时,布局管理器会自动调整组件的排列。9.4GUI布局管理器布局:一个容器中的各个组件之间的位9.4.1FlowLayout流式布局管理器流式布局(FlowLayout):最基本的一种布局把图形元件以组件的preferredSize一个接一个地显示在面板上,如果一行显示不了所有的组件,会自动换到下一行显示。是Panel、JApplet和JPanel默认的布局管理方式。
set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论