您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Java的GUI编程.
Java的GUI编程GUI编程AWT与Swing如何创建图形界面布局管理器什么是GUI编程graphicaluserinterfaces--图形用户界面为用户提供界面友好的所见所得的桌面操作环境。JComboBoxJCheckBoxJButtonJRadioButtonJLabelJTexAreaJTexFieldjava.awt包•java.awt包是Java内置的包,属于Java基本类库(JFC)的一部分,其中包括以下内容:–便于用户输入的一组丰富的界面组件;–将组件放置在适当位置的几中布局管理器;–事件处理模型;–图形和图像工具等等。•要使用到该包中的类,则必须显式地声明如下语句:importjava.awt.*;java.awt包中控件类的体系结构ComponentButtonCheckboxContainerChoiceCanvasTextComponentLabelPanelAppletFrameDialogWindowTextAreaTextFieldSwing简介和javax.swing包•Swing是在AWT基础上发展而来的轻量级组件,与AWT相比不但改进了用户界面,而且所需的系统资源更少;•Swing是纯Java组件,使所有的应用程序在不同的平台上运行时具有本机外观和相同的行为。•javax.swing包包含了一系列Swing控件,如果要使用该包中的类,则必须显式地声明如下语句:importjavax.swing.*;javax.swing包中控件类的体系结构JFrameFrameJDialogDialogWindowJComponentContainerComponentObjectJOptionPaneJMenuBarJListJLabelJComboBoxJTextJPanelJScrollBarAbstractButtonJMenuItemJButtonJToggleButtonJMenuJRadioButtonJCheckBoxJTextFieldJTextArea组件类与容器类组件(Component):基本图形元素,如按钮,文本框,文本域,多选按钮,单选按钮等容器(Container):可以容纳组件的区域,在容器上可以添加别的组件。如:Frame,Window等。注意:容器中可以容纳组件,也可以容纳比它“容量级别小”的容器。AWT容器Window的子类Frame:最常用的窗体Dialog:对话框有两种类型的容器:Window和PanelWindow的与Panel的区别:Window是能够独立存放的容器;Panel不能单独存在,必须放入Window或其子类中SwingGUI框架菜单栏顶级容器GUI组件GUI组件内容窗格顶级容器•JFrame:用于框架窗口的类,此窗口带有边框、标题、用于关闭和最小化窗口的图标等。带GUI的应用程序通常至少使用一个框架窗口。•JDialog:用于对话框的类。•JApplet:用于使用Swing组件的JavaApplet的类。中间容器•JPanel:最灵活、最常用的中间容器。•JScrollPane:与JPanel类似,但还可在大的组件或可扩展组件周围提供滚动条。•JTabbedPane:包含多个组件,但一次只显示一个组件。用户可在组件之间方便地切换。•JToolBar:按行或列排列一组组件(通常是按钮)。javax.swing.JFrame•JFrame组件用于在Swing程序中创建窗体;•以下是JFrame常见的构造方法:构造方法说明JFrame()创建一个框架,该框架初始为不可见JFrame(Stringtitle)创建一个框架,参数title为窗体标题,该框架初始为不可见JFrame的常用方法函数原型说明voidsetTitle(Stringtitle)以title中指定的值,设置窗体的标题voidsetSize(intw,inth)设置窗体的大小,参数w和h指定宽度和高度voidshow()显示窗体ContainergetContentPane()获得窗体的内容面板,当要往窗体中添加组件或设置布局时,要使用到该方法voidsetVisible(booleanb)设置窗体是否为可见,由参数b决定voidsetBackground(Colorc)设置窗体的背景色创建窗体示例importjavax.swing.*;publicclassSwingDemoextendsJFrame{/*构造方法*/publicSwingDemo(){this.setTitle(“我的第一个GUI程序”);//设置窗体的标题this.setSize(300,200);//设置窗体的大小this.setVisible(true);//将窗体显示this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*main方法,程序入口*/publicstaticvoidmain(String[]args){//创建窗体的实例,匿名对象newSwingDemo();}}JPanel容器JPanel是最简单的容器类。应用程序可以将其他组件放在面板提供的空间内。JPanel只能存在于其他的容器(Window或其子类)中,一般被放入Frame中JFrame可以被划分为若干个JPanel,然后在JPanel上进一步进行组件的布局;面板的默认布局管理器是FlowLayout布局管理器;不能为JPanel设置标题。Javax.swing.JPanel的常用方法函数原型说明JPanel()创建默认布局(FlowLayout)的面板JPanel(LayoutManagerlayout)以指定的布局管理器创建面板voidsetLayout(LayoutManagerlayout)以指定布局管理器设置面板的布局Componentadd(Componentcomp)往面板内添加控件VoidsetBackground(Colorbg)设置面板的背景色布局管理器布局管理器用来:决定组件在容器上如何摆放;决定组件的大小;Frame的默认布局管理器是BorderLayout;JAVA中常用的布局:FlowLayout(流式布局)BorderLayout(边框布局)GridLayout(网格布局)–GridBagLayout(网格包布局)–CardLayout(卡片布局)为容器设置布局布局管理器(LayoutManager)指的是FlowLayout,BorderLayout等类的对象;调用容器对象的setLayout(LayoutManagerlm)方法,即可为容器设置不同的布局;利用多种复杂布局的组合,总可以达到你想要的效果。FlowLayout容器流布局是面板的默认布局管理器左上角右下角依次排序的组件垂直或水平间距BorderLayout上边的组件左边的组件右边的组件下边的组件容器NorthSouthEastWestCENTERGridLayout行列组件大小相同重新调整组件大小以适合各自的单元指定网格中的行数和列数,创建网格布局CardLayout•可存储几个不同的布局。•每个布局就像是一个卡片组中的一张卡片。•在一个给定的时间总会有一张卡片在顶层。•卡片通常为一个Panel对象。•每当需要许多面板切换,而每个面板需要显示为不同布局时,可以使用卡片布局。GridBagLayout•通过使用以下语法容器可获得GridBagLayout:–GridBagLayoutgb=newGridBagLayout();–ContainerName.setLayout(gb);•要使用此布局,必须提供各组件的大小和布局等信息。•GridBagConstraints类中包含GridBagLayout类用来定位及调整组件大小所需的全部信息。GridBagConstraints类•成员变量列表:-gridx,gridy:指定组件放置于哪个单元中-gridwidth,gridheight:指定组件将占用多少行和多少列-weightx,weighty:指定在一个GridBagLayout中应如何分配空间,这些变量的缺省值为0-ipadx,ipady:指定组件的高度和宽度GridBagConstraints•成员变量列表:-fill:指定在单元大于组件的情况下,组件如何填充此单元,共有4可选值。缺省值为:GridBagConstraints.NONE-anchor:指定将组件放置在单元中的位置,共有9个可选值。缺省值为:GridBagConstraints.CENTERSwing组件•Swing组件独立于本地窗口系统。•Swing组件除了AbstractButton类之外都以J开头。•Swing组件是基于AWT构建。•包含AWT可视化组件的替代组件,也包含复杂组件-树和表JLabel•它既可以显示文本也可以显示图像•构造函数如下:•JLabel(Iconicon):icon表示使用的图标•JLabel(Stringtext,Iconicon,intalign):text表示使用的字符串;icon表示使用的图标;align表示水平对齐方式,其值可以为:LEFT、RIGHT、CENTER。…ImageIconicon=newImageIcon(Calv.gif);JLabelcalv_label=newJLabel(这是Calvin,icon,SwingConstants.LEFT);…文本组件•JtextComponent为所有Swing文本组件的根类JTextFieldJTextComponentJEditorPaneJTextAreaJTextPaneJPasswordFieldJTextField•JTextField组件允许输入或编辑单行文本•此类的构造函数包括:–JTextField()–JTextField(Documentdoc,Stringtext,intcolumns)–JTextField(intcolumns)–JTextField(Stringtext)–JTextField(Stringtext,intcolumn…Containercon=getContentPane();con.setLayout(newFlowLayout());JLabeljl=newJLabel(“文本域”);con.add(jl);JTextFieldtf=newJTextField(20);con.add(tf);…JTextArea•JTextArea组件用于接受来自用户的多行文本•它可实现可滚动界面•JTextArea组件可使用下列构造函数创建:–JTextArea()–JTextArea(introws,intcols)–JTextArea(Stringtext)–JTextArea(Stringtext,introws,intcols)–JTextArea(Documentdoc)–JTextArea(Documentdoc,Stringtext,introws,intcols)…JLabeljl=newJLabel(“文本区”);con.add(jl);JTextAreata=newJTextArea(5,10);con.add(ta);…选择性输入•为了简化表单填写过程,通常为用户提供多种可供选择的选项,而无需用户写出他们的响应。常用于选择性输入的组件有:–复选框–单选按钮–列表框–组合框复选框•复选框用于为用户提供一组选项•JCheckBox类具有下列构造函数:–JCheckBox()–JCheckBox(Iconicon)–JCheckBox(Iconicon,booleanselected)–JCheckBox(Stringtext)–JCheckBox(Stringtext,booleanselected)–JCheckBox(Stringtext,Iconicon)–JCheckBox(Stringte
本文标题:Java的GUI编程.
链接地址:https://www.777doc.com/doc-2881177 .html