Java程序设计资料:单元13 常用Swing组件的使用.doc

上传人(卖家):罗嗣辉 文档编号:2047614 上传时间:2022-01-21 格式:DOC 页数:11 大小:7.70MB
下载 相关 举报
Java程序设计资料:单元13 常用Swing组件的使用.doc_第1页
第1页 / 共11页
Java程序设计资料:单元13 常用Swing组件的使用.doc_第2页
第2页 / 共11页
Java程序设计资料:单元13 常用Swing组件的使用.doc_第3页
第3页 / 共11页
Java程序设计资料:单元13 常用Swing组件的使用.doc_第4页
第4页 / 共11页
Java程序设计资料:单元13 常用Swing组件的使用.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、单元 13 常用 Swing 组件的使用单元目标 了解工具包 AWT、工具包 SWING 的使用方法 掌握 JLabel、JTextField、JButton 类的使用方法 掌握常见 Swing 组件的特点学习任务任务描述用户在制定的区域输入加油钱数, 汽车跑的公里数, 和汽油的价格, 单击 “计算”按钮,计算显示百公里油耗。计算公式为: 百公里油耗(升) = 加油钱数/汽油的价格/汽车跑的公里数*100。运行结果知识准备Java 对 GUI 的支持包括基本控件、界面容器、事件机制、布局设计、图形和图像等, 并提供了大量的类来实现界面设计。 可以实现图形界面的主要有 AWT工具集和 Swing

2、 工具集。13.1 抽象窗口工具包(AWT)AWT 是 Abstract Window Toolkit 的缩写,称为抽象窗口工具集,AWT 由Java 中的 java.awt 包提供,是 Java 基础类的一部分。AWT 提供了构建用户界面的组件,例如菜单、按钮、文本框、对话框、复选框等,可以根据图形界面组件的输入实现事件处理。此外,AWT 允许绘制图形、处理图像、控制用户界面的布局、字体显示以及提供利用本地剪贴板实现数据传送类等具有辅助性质的类, AWT 中类与类之间的关系如图 4-1 所示, 由 Component 类的子类或间接子类创建的对象称为一个组件组件(又称控件) 。Java 把由

3、 Container 的子类或间接子类创建的对象称为一个容器容器,可以把组建添加到容器中。油耗计算程序设计油耗计算程序设计图 4-1AWT 类体系结构由于 AWT 属于重量级组件,消耗资源比较多、不同操作系统中外观也会有所不同, 而且其功能受限于本地组件。 为了克服这些缺点, Java 在 AWT 基础上,又提供了 Swing 组件。13.2 Swing 组件简介Swing 组件由 javax.swing 包提供,是内容丰富、功能强大的轻量级组件。设计与 AWT 的设计不同,与显示和事件有关的许多处理工作都由 Java 编写的UI 类来完成。轻量级组件占用资源较少,效率较高,显示外观与平台无关

4、,功能更强更灵活。 Swing 是纯 Java 语言实现的, 并不依赖本地的工作平台。 Swing具有和 AWT 同性质的组件,如按钮等。从命名的角度看,Swing 组件都是第一个字母标有一个“J” ,比如 AWT 按钮组件命名为 Button,而 Swing 的按钮组件命名为 JButton,见图 4-1。Swing 还定义了其他具体应用的组件,如树组件、表组件和列表组件等。【小知识】Swing 组件与 AWT 组件的区别:1.Swing 标签和按钮可以显示文本和图片,AWT 中同性质的组件只可以显示文本。2.Swing 可以让用户定义组件的外观,AWT 组件的外观取决于本地操作系统。3.S

5、wing 具有良好的扩展性,用户可以扩展或定义组件,AWT 的扩展性较差。AWT 组件仍被支持,由于它受到本身条件的限制,在 GUI 用户界面组件应用范围减少。Swing 组件在图形用户界面领域中应用更加广泛。但着并不意味着 AWT 集被 Swing 集完全取代。Swing 集只是基于 AWT 构架之上,提供更加强大的 GUI 组件而已。13.3 Jcomponent 组件JComponent 类是 java.awt 包中容器 Container 的子类,因此所有继承自JComponet 类的轻量级组件也都是容器。需要注意的是,不可以把组件直接添加到 Swing 窗体中,应当把组件添加到 Sw

6、ing 窗体所包含的一个称为内容面板的容器中。在 Swing 窗体的内容面板中,尽量只使用轻量组件,否则可能会出现预想不到的问题。 Swing 窗体通过调用 public Container getContentPane() 方法得到它的内容面板。13.4 Jframe 组件JFrame是与AWT中的Frame相对应的Swing组件, 继承自java.awt.Frame类, 功能也相当。JFrame 上面只能有一个唯一的组件, 这个组件为 JRootPane,调用 JFrame.getContentPane()方法可获得 JFrame 中内置的 JRootPane 对象,应用程序不能直接在 J

7、Frame 实例对象上增加组件和设置布局管理器, 而应该在JRootPane 对象上增加子组件和设置布局管理器。 从 JDK5.0 之后,重写了add(Component comp)和 setLayout(LayoutManager l)方法, 直接调用这两个方法也是在操作 JContentPane 对象。 当用户点击 JFrame 的关闭按钮时, JFrame会自动隐藏,但没有关闭,可以在 windowClosing 事件中关闭。更常用的方式是调用 JFrame 的方法来关闭图 4-1 Swing 组件结构图【实例 4-1】演示 Swing 组件的用法。 【源代码 例 4-1】提示提示:JF

8、rame 类的用法有两种,一种是直接创建其对象并使用,另一种方法是继承 JFrame 类,创建其子类,然后再创建并使用其子类的对象。大家要注意 Swing 组件和 AWT 组件外观上的差异。示例的核心代码如下所示,完整代码请从课程资源库或教材配套光盘获取。class MyJWindow extends JFrame / 继承使用MyJWindow() JButton btn = new JButton(轻组件按钮);JTextArea txt = new JTextArea(轻组件, 20, 20);.;主类定义如下,其中 directUse()表示直接使用 JFrame 类,inheritU

9、se()表示继承使用 JFrame 类,两个方法都可以显示窗口,但一次只能使用一个。public class Example4_2 /直接使用static void directUse() JButton btn = new JButton(轻组件按钮);JTextArea txt = new JTextArea(轻组件, 20, 20);JFrame jfrm = new JFrame(根窗体);13.5 swing 的其他常用组件13.5.1 Jlabel 组件标签组件是用于显示文本信息、或图标、或二者兼而有之。JLabel 组件不会对用户的输入发生反应,即,对 JLabel 组件不能编辑

10、。标签组件可以将显示内容垂直或水平显示,通常默认文本信息的显示状态为水平。而图标的显示状态为垂直。标签组件一般起到提示作用。油耗计算程序设计油耗计算程序设计13.5.2 文本框JTextField 组件用于创建文本框。文本框是用来接受用的单行文本信息输入的区域。通常文本框用于接受用户信息或其他文本信息的输入。当用户输入文本信息后,如果为 JTextField 对象添加事件处理,按回车键会激发一定的动作。JPasswordField 是 JTextField 的子类,是一种特殊的文本框,也是用来接受单行文本信息的输入的区域,但会用回显字符串代替输入的文本信息。因此,JPasswordField

11、组件也称为密码文本框。JPasswordField 的默认的回显字符是“*” ,用户可以自行设置回显字符。13.5.3 JTextArea 组件JTextArea 组件是文本区组件。它与 JTextField 一样能接受文本信息的输入和显示。 但是与 JTextField 组件不同的是, JTextArea 对象可以多行输入与显示,突破了 JTextField 的单行的限制。但是,如果文本信息的行数超过文本区限定的行数,超出的文本信息不能显示。为了解决这个问题,可以借助 JScrollPane 滚动窗格组件。 将文本区放置到滚动窗格中, 就可以实现超出文本信息的滚动输出。类似的程序代码如:ne

12、w JScrollPane(JTextArea 文本区对象)。13.5.4 JButton 组件JButton 是用来创建命令按钮。JButton 对象具有这样的功能:当用户按下命令按钮,会激发一定的动作。JButton 创建的按钮可以具有图标和文本信息的内容,通过它们可以有效地提示及帮助用户操作。13.5.5 复选框和单选框JCheckBox 组件可以用来创建具有文本和图标的复选框。这种复选框具有来“选中”或“取消选中”状态,可以通过用户的选择来实现。通常,用多个复选框作为一组来表示多种组合条件,用户可以同时选择多个复选框。JRadioButton 组件可以用来创建具有文本和图标的单选按钮,

13、和JCheckBox 组件一样,可以表示“选中”或“取消选中”状态。可以定义一个或多个单选按钮添加到一个 ButtonGroup 按钮组作为整体处理,只不过在任何情况下,只有一个单选按钮能处于“选中”状态,其他单选按钮处于“非选中”状态中。一般,定义多个单选按钮来表示多个条件选择一种的情况。13.5.6 JcomboBox 组件JComboBox 组件用来创建组合框对象。一般,根据组合框是否可编辑的状态, 可以将组合框分成两种常见的外观。可编辑状态外观是视为文本框和下拉列表的组合,不可编辑状态的外观可视为按钮和下拉列表的组合。在按钮或文本框的右边有一个带有三角符号的下拉按钮。用户可以点击该下拉

14、按钮,可以出现一个内容列表。这也是组合框的得名。组合框通常用于从列表的“多个项目中选择一个”的操作。13.5.7 JList 组件JList 组件用于定义列表,允许用户选择一个或多个项目。与 JTextArea 类似,JList 本身不支持滚动功能,如果要显示超出显示范围的项目。任务实施1实现思路定义一个油耗计算器窗口类, 继承自窗体类 JFrame, 并实现 ActionListener接口。 窗口中通过 JTextField 类添加三个文本条, 通过 JButton 类添加计算按钮,通过 JLabel 类添加标签显示计算结果。通过实现 ActionListener 接口的actionPer

15、formed 方法响应用户点击按钮的操作。(1)设计油耗计算器窗口(2)定义油耗计算器窗口类的构造方法(3)定义 actionPerformed 单击动作处理方法(4)定义 main 主方法,创建对象并进行测试2. 程序代码public GasConsumption() / 窗口界面构建代码Container con = getContentPane();con.setLayout(new FlowLayout();con.add(new JLabel(上次加油金额(元);usedMoney = new JTextField(200);con.add(usedMoney);con.add(ne

16、w JLabel(公里数);runKm = new JTextField(500);con.add(runKm);con.add(new JLabel(汽油的价格(元);gasPrice = new JTextField(7.5);con.add(gasPrice);calculate = new JButton(计算);油耗计算程序设计con.add(calculate);calculate.addActionListener(this);gasConsumption = new JLabel();con.add(gasConsumption);/ 设置窗体的标题、大小、可见性及关闭动作se

17、tTitle(油耗计算器);setSize(340, 260);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 计算按钮点击后执行的油耗计算代码public void actionPerformed(ActionEvent e) float fMoney = Float.parseFloat(usedMoney.getText();float fKm = Float.parseFloat(runKm.getText();float fPrice = Float.parseFloat(gasPrice.getTe

18、xt();float fGas = fMoney/fPrice/fKm*100;gasConsumption.setText(百公里油耗(升): +fGas);任务拓展Swing 组件中除了包括上述组件外,还有一些其他组件,下面进行部分讲解。1.JDialogJDialog 类是 java.awt 包中 Dialog 类的子类。常见构造方法:JDialog() 创建一个没有标题并且没有指定 Frame 所有者的无模式对话框。JDialog(Frame owner, String title)创建一个具有指定标题和指定所有者窗体的无模式对话框。JDialog(Frame owner, boole

19、an modal)创建一个没有标题但有指定所有者Frame的有模式或无模式对话框。JDialog(Dialog owner, String title) 创建一个具有指定标题和指定所有者对话框的无模式对话框。JDialog(Dialog owner, boolean modal)创建一个没有标题但有指定所有者对话框的有模式或无模式对话框。使用时和JFrame类似, 不可以把组件直接添加到JDialog中, JDialog也含有一个内容面板,应当把组件添加到内容面板中。2. JPanelJPanel 组件定义的面板实际上是一种容器组件,用来容纳各种其他轻量级的组件。此外,用户还可以用这种面板容器

20、绘制图形。【实例4-2】演示JPanel作为画布的用法。 【源代码 例4-2】class MyCanvas extends JPanelpublic void paintComponent(Graphics g)super.paintComponent(g);g.setColor(Color.red);g.drawString(a JPanel used as canvas,50,50);3. JScrollPane滚动窗口 JScrollPane可以把一个组件放到一个滚动窗口中, 然后通过滚动条来观察这些组件。【实例4-3】演示JScrollPane的使用方法。 【源代码 例4-3】提示提示

21、:本程序显示一窗口,窗口中包含一个文本区域,如果输入的文字超出行、列显示范围,则自动显示水平和垂直的滚动条。JButton btn = new JButton(ok);JTextArea txt = new JTextArea(10,20);JScrollPane scroll = new JScrollPane(txt);Container con = getContentPane();con.add(btn,BorderLayout.SOUTH);con.add(scroll,BorderLayout.CENTER);4. JSplitPaneJSplitPane拆分窗口:拆分窗口就是被分

22、成两部分的窗口,有水平拆分和垂直拆分两种。构造方法:JSplitPane(int newOrientation,boolean newContinuousLayout,ComponentnewLeftComponent,Component newRightComponent);油耗计算程序设计油耗计算程序设计JSplitPane(int newOrientation, Component newLeftComponent,Component newRightComponent);newOrientation取值:JSplitPane .HORIZONTAL_SPLIT or JSplitPan

23、e .VERTICAL_SPLIT;newContinuousLayout 表示拆分线移动时组件是否连续变化;newLeftComponent,newRightComponent表示窗口中的两个组件【实例 4-4】演示如何用 JSplitPane 拆分窗口。 【源代码 例 4-4】JSplitPane split_one = newJSplitPane(JSplitPane.VERTICAL_SPLIT,true,btn1,btn2);JSplitPane split_two = newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,split_one,txt);

24、Container con = getContentPane();con.add(split_two,BorderLayout.CENTER);图4-5 拆分窗口示例5. JInternalFrame内部窗体JInternalFrame用于在一个主窗口内显示一个或多个子窗口。每个子窗口都可以拖动、关闭、变成图标、调整大小、标题显示和支持菜单栏。使用时, 需要先将子窗口对象添加到JDesktopPane中,再将JDesktopPane对象添加到主窗口的内容面板中。 子窗口默认不可见, 需要设置可见性和大小。 构造方法:public JInternalFrame(String title, boo

25、lean resizable, boolean closable,boolean maximizable, boolean iconifiable)【实例4-5】演示内部窗体JInternalFrame的使用方法。 【源代码 例4-5】Container con = getContentPane();con.setLayout(new GridLayout(1,2);btn1 = new JButton(boy);油耗计算程序设计油耗计算程序设计btn2 = new JButton(girl);JInternalFrame frm1 = new JInternalFrame(内部窗体1,tru

26、e,true,true,true);frm1.getContentPane().add(btn1);frm1.setSize(100,100);frm1.setVisible(true);JDesktopPane desk1 = new JDesktopPane();desk1.add(frm1);JInternalFrame frm2 = new JInternalFrame(内部窗体2,true,true,true,true);frm2.getContentPane().add(btn2);frm2.getContentPane().add(new JLabel(ookk),BorderL

27、ayout.NORTH);frm2.setSize(300,150);frm2.setVisible(true);JDesktopPane desk2 = new JDesktopPane();desk2.add(frm2);con.add(desk1);con.add(desk2);图4-6 内部窗口示例除了上面介绍的一些组件外,还有一些常用组件,如计时器 Timer、进度条JProgressBar、树形组件 JTree、表格 JTable、文本窗格 JTextPane、文件选择器 JFileChooser 等,有些组件会在后面的任务中用到,有些限于篇幅在这里就不做详细介绍了,读者如果感兴趣可以查看 JDK 帮助文档了解其使用方法。任务实训1.实训目的 掌握使用 JFrame 构造窗口; 掌握使用 JPanel 构造容器对象; 掌握使用基本组件构造 GUI 界面。油耗计算程序设计2.实训内容利用Java Swing技术设计一个E-mail邮箱地址注册的图形用户界面应用程序。程序运行效果如图 4-7 所示。图 4-7 E-mail 注册界面

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(Java程序设计资料:单元13 常用Swing组件的使用.doc)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|