《java实用教程第18讲javaswing》由会员分享,可在线阅读,更多相关《java实用教程第18讲javaswing(25页珍藏版)》请在金锄头文库上搜索。
1、第18讲 Java Swing,18.1 Swing 入门 18.2 容器 18.3 布局管理 18.4 基本组件 18.5 本讲小结,18.1 Swing入门,GUI编程的步骤: (1)创建容器; (2)为容器设置布局; (3)创建组件,把其添加到容器中; (4)为组件添加事件处理代码。,18.1.2 显示框架,drawString(String s, int x, int y) 从参数x、y指定的坐标位置处,从左向右绘制参数s指定的字符串。 drawChars(char data,int offset, int length, int x, int y) 绘制data数组中的部分字符,le
2、ngth指定数组中要连续绘制的字符的个数,offset是首字符在数组中的位置。,18.2 容器,容器是用来盛装其它GUI组件的GUI组件,AWT中的容器类有Window、Panel、Applet、Frame、dialog等,而Swing容器类有JFrame、JWindow、JDialog、JApplet、JPanel等。本节介绍几种常用的Swing容器。,18.2.1 顶层容器,Swing中的JFrame、JDialog、JApplet和JWindow直接继承了AWT组件,它们是重量级的,被称为顶层容器。 (1)JFrame继承自AWT中的Frame类,通常作为主窗体使用。 (2)JDialo
3、g用于创建对话框,对话框不能单独存在,必须借助于窗体。 (3)JApplet可作为Java小应用程序的窗体,被嵌入到网页中运行。 (4)JWindow与JFrame类似,所不同的是JWindow没有用于默认关闭操作或是菜单栏的属性。,18.2.2 中间层容器,有些容器不能直接显示到电脑屏幕上,必须放置到顶层容器或其它容器中,它们存在的目的是放置各种组件。常用的中间层容器有JPanel、JScrollPane、JSplitPane、JToolBar、JInternalFrame、JLayeredPane、JRootPane、JTabbedPane,(1)JPanel JPanel(面板)常用来放
4、置其它轻量级组件。默认状态下,它不绘制任何东西,可以很容易的为其设置边框,也可以嵌套使用。,(2)JScrollPane JScrollPane(滚动面板)JScrollPane包括九个部分:一个中心显示区、四个角和四条边,(3)JSplitPane JSplitPane(分割面板)是一个可以被分成两个显示区域的面板,分割方式可以是水平分割,也可以是垂直分割。如果设置了动态拖拽功能,则拖动分割线时两边组件会随着拖拽动态改变大小。通常先把组件放到JScrollPane中,再把JScrollPane放到JSplitPane中,这样每个窗口都可以拖动滚动条看到组件的全部内容。,(4)JTabbedP
5、ane JTabbedPane(页签面板)可以在窗体上显示多个控件。可以将不同类别的控件放到不同的Tab页上,然后通过需要点击相应的Tab页。可以通过 setTabComponentAt方法将控件放到Tab上。,(5)JLayeredPane,(6)JInternalFrame JInternalFrame(内部窗体)具有最大化、最小化、关闭、加入菜单等功能。JInternalFrame是轻量级组件,不能单独显示 为了方便管理,一般会将JInternalFrame加入JDesktopPane中,JDesktopPane是一种特殊的分层面板,是JLayeredPane子类,用来建立虚拟桌面(Vi
6、tual Desktop).它可以显示并管理众多JInternalFrame之间的层次关系。,(7)JOptionPane JOptionPane(选择面板)能够方便地弹出满足用户要求的各种类型对话框。此类中包含showXxxDialog()方法: 1)showConfirmDialog()方法:显示确认对话框; 2)showInputDialog()方法:显示输入对话框; 3)showMessageDialog()方法:显示消息对话框; 4)showOptionDialog()方法:显示选择对话框。,18.3 布局管理,Java 为了实现跨平台的特性并且获得动态的布局效果,采用布局管理器对容
7、器中的组件进行布局。 Java定义了多种布局管理器,通过布局管理器之间的组合,能够设计出复杂的界面,而且在不同操作系统平台上都能够有一致的显示界面。,18.3.1 BorderLayout,BorderLayout 是JFrame的默认布局,可以直接通过add()方法为其添加组件,默认情况下组件被放在JFrame的中心位置,并且组件向四周扩展,占满整个JFrame,BorderLayout的特点: (1)把容器分为五个方位:东、西、南、北、中,组件按照方位被添加到容器。 (2)组件的大小占满整个所属方位,组件的大小随着容器的变化而变化。 (3)如果不指定方位,组件默认被添加到容器的中心位置,并
8、且占满整个容器。,18.3.2 FlowLayout,FlowLayout是JPanel的默认布局方式。使用FlowLayout布局方式的容器中,组件按照加入的先后顺序按照设置的对齐方式(居中、左对齐、右对齐)从左向右排列,一行排满后再从下一行开始继续排列。 在这种布局方式中,组件的大小不会随着容器大小的变化而改变,其位置可能会发生改变。,18.3.3 GirdLayout,GridLayout是把容器分成MN个网格,M是行数,N是列数,M和N的值可以在创建GridLayout的对象时确定。组件按照从左到右,从上到下的顺序放入容器,容器大小改变时,组件的相对位置不变,大小会改变。,18.3.4
9、 CardLayout,CardLayout是把容器分成多张卡片,每个组件占用一张卡片,组件之间的关系就像一副牌,叠在一起。初始时显示第一张卡片,通过CardLayout类提供的first()方法可以切换到第一张卡片,last()方法可以切换到最后一张卡片,next()方法可以切换到下一张卡片,18.3.5 BoxLayout,BoxLayout 可以通过参数 X_AXIS、Y_AXIS把控件进行水平或者垂直排列布局,X_AXIS 表示水平排列,Y_AXIS 表示垂直排列。BoxLayout 的构造函数有两个参数,一个参数定义使用该 BoxLayout 的容器,另一个参数是指定 BoxLayo
10、ut 是采用水平还是垂直排列。 当BoxLayout进行布局时,假如布局的整个水平或者垂直空间的尺寸不能放下所有控件,那么BoxLayout会试图调整各个控件的大小来填充整个布局的水平或者垂直空间。 BoxLayout往往和Box这个容器结合在一起使用 Box类的静态方法createHorizontalBox()可以获得一个水平存放组件的Box对象。静态方法createVerticalBox()可以获得一个可以竖直存放组件的Box对象。,18.3.6 绝对布局,每个组件(包括容器)都是一个矩形区域,该矩形区域的左上角为坐标原点(0,0),x轴向右增大,y轴向下增大 使用绝对布局的操作步骤: (
11、1)首先利用setLayout(null)语句将容器的布局设置为null布局(空布局); (2)再调用组件的setBounds(int x, int y, int width,int height)方法,设置组件在容器中的大小和位置,单位均为像素。,18.4 基本组件,因为所有轻量级组件类都继承于JComponent,而JComponent类又是Container类的子类,因此,所有的Swing组件都可作为容器使用。本节只介绍常用的几种基本组件。,18.4.1 AbstractButton,Swing中许多类型的按钮,包括复选框、单选按钮等,都是从AbstractButton类继承而来的。可以
12、使用setBorder()方法为组件添加边框,还可以把单选按钮添加到按钮组中。,18.4.2 菜单,下拉式菜单也是从AbstractButton继承而来,而弹出式菜单继承于JComponent类。在使用下拉式菜单时,必须为容器设置菜单条,然后把菜单添加到菜单条上,把菜单项添加到菜单上。在使用弹出式菜单时,必须结合鼠标事件显示。,18.4.3 标签和文本编辑组件,JLabel(标签)用于显示文本或图像。可以通过设置垂直和水平对齐方式,指定标签显示区中标签内容在何处对齐。默认情况下,只显示文本的标签是开始边对齐,而只显示图像的标签则水平居中对齐。,18.4.4 组合框和列表框,用户可以从JComb
13、oBox(组合框,也称下拉列表)中列出的一组元素中选择一个,而且只能选一个。而JList(列表框)与组合框完全不同,可以进行多重选择,并且其在屏幕上可以占据固定行数的空间,JList 不实现直接滚动。要创建一个滚动的列表,要将它添加到 JScrollPane中。,18.4.5 滑块和进度条,通过JSlider(滑块)的前后移动来控制数据的输入有时能使某种操作更直观,如音量的控制。JProgressBar(进度条)能够动态的显示的数据的状态。,18.4.6 选择框,JFileChooser(文件对话框)支持打开和保存文件,使文件操作更方便,但要真正打开和保存文件,还要结合I/O操作。 JColorChooser(颜色选择对话框)是Java中已经定义好的颜色选择器,通过它可以很方便的得到各种颜色。,18.4.7 表格和树,JTable(表格)是数据的视图。 JTree (树)一个 JTree 对象只是提供了数据的视图, 通过查询其数据模型可获得数据。 树中显示的每一行包含一项数据,称之为节点( node )。每颗树有一个根节点( root node ),其他节点都是它的子孙。 分支节点可以有任意多个孩子。,18.5 本讲小结,本讲首先讲述了Swing的基础知识,然后对容器、布局管理进行了介绍,最后讲述了几种常用的组件。,讲后练习,1、编写程序实现下面的界面。,