Swing程序设计

2019-06-11 19:50

第 1 3 章 图形化用户界面(GUI)

Swing 较早期版本中的AWT更为强大、性能更优良,Swing 中除了保留AWT中几个重要的重量级组件之外,其他组件都为轻量级,这样使用Swing 开发出的窗体风格会与当前运行平台上的窗体风格一致,同时程序员也可以在跨平台时指定窗体统一的风格与外观。Swing 的使用很复杂,本章主要讲解Swing 中的基本要素,包括容器、组件、窗体布局、事件和监听器。 通过阅读本章,您可以:

? 了解Swing 组件 ? 掌握使用常用窗体

? 掌握在标签上设置图标

? 掌握应用程序中的布局管理器 ? 掌握常用面板 ? 掌握按钮组件 ? 掌握列表组件 ? 掌握文本组件

? 学会常用事件监听器

一、图形化用户界面介绍

? Swing 概述

原来的AWT 组件来自java.awt 包,当含有AWT 组件的Java应用程序在不同的平台上执行时,每个平台的GUI组件的显示会有所不同,但是在不同平台上运行使用Swing 开发的应用程序时,就可以统一GUI 组件的显示风格,因为Swing 组件允许编程人员在跨平台时指定统一的外观和风格。

Swing 组件通常被称为“轻量级组件”,因为它完全由Java语言编写,而Java是不依赖于操作系统的语言,它可以在任何平台上运行;相反,依赖于本地平台的组件相应地被称为“重量级组件”,如AWT组件就是依赖本地平台的窗口系统来决定组件的功能、外观和风格。Swing主要具有以下特点:

轻量级组件 可插入外观组件

? 组件(Component)

定义:以图形化的方式显示在屏幕上的,和用户进行交互的对象,就叫组件; 组件包括:菜单、标签、文本框、密码框、滚动条、单选按钮、复选框、按钮等等;

? 容器(Container)

组件不能独立的显示出来,只能将组件放在容器里,才能正常的显示。 布局的定义:将组件合理有序的排列和分布在容器中(包括组件的位置、大小);

? 布局管理器(layout manager)

负责确定组件在容器中的位置和大小。

调用容器的setLayout(布局管理器对象) 方法,为容器指定某种布局管理器

的一个对象。

当容器需要定位组件和确定组件大小时,就会给布局管理器对象发消息,让它完成该项工作。

awt 中常见的布局管理器有: BorderLoyout (边界布局管理器) 简介:分为北、南、东、西、中; FlowLayout (流式布局管理器)

简介:组件在一行中从左至右水平排列,排满后折行; GridLayout (网格布局管理器)

简介:以行和列的网格形式安排组件;

GridBagLayout 布局管理器

简介:更复杂、功能更强的网格布局; CardLayout 布局管理器

简介:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个;

二、JFrame 容 器(常用窗体)

知识点:

1、如何创建窗体

Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常,这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置,也可以使用remove()方法将组件从容器中删除。 2、窗体的关闭方式 创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法关闭窗体。Java为窗体关闭提供了多种方式,常用的有以下4种: ? EXIT_ON_CLOSE 表示退出应用程序默认窗口关闭; ? DO_NOTHING_ON_CLOSE 表示什么都不做就将窗体关闭; ? DISPOSE_ON_CLOSE 表示任何注册监听程序对象后会自动隐藏并释放窗体; ? HIDE_ON_CLOSE 表示隐藏窗口的默认窗口关闭; 3、JDialog窗体 JDialog窗体是Swing组件中的对话框,它继承了AWT组件中java.awt.Dialog类。 功能:从一个窗体中弹出另一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样。JDialog窗体实质上就是另一种类型的窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。 例子:

import javax.swing.*; public class Test{

public static void main(String[] args){ /* 创建窗体*/

JFrame jf=new JFrame(); //创建窗体对象 jf.setTitle(\用户界面\); //设置窗体标题 jf.setSize(260,180); //设置窗体大小 jf.setLocation(100, 270); //设置窗体位置

jf.setResizable(false); //设置窗体是否可以调整大小 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体关闭方式

jf.setVisible(true); //设置窗体可见性 } }

没有设置标题、大小的窗体:

设置标题、大小的窗体:

扩展:

1、设置组件的位置和大小的方法:

setBounds (int x,int y,int width,int height) 方法相当于:setLocation(int x,inty) 和setSize(int width,int height) 2、将软件的位置Location设置为:水平居中,垂直居中

Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);

三、标签组件与图标

? 概述

在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。在应用程序的用户界面中,一个简短的文本标签可以使用户知道这些组件的目的,所以标签在Swing中是比较常用的组件。在本节中将探讨Swing标签的用法、如何创建标签,以及如何在标签上放置文本与图标。 ? 标签组件Jlabel 标签由JLabel类定义,标签可以显示一行只读文本、一个图像或带图像的文本,它并不能产生任何类型的事件,只是简单地显示文本与图片,但是可以使用标签的特性指定标签上文本的对齐方式。 ? 图标组件Icon Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途或装饰组件。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方

法来创建。 ? 创建图标 在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。如果使用Icon接口,必须实现Icon接口中的3个方法。 ? 例子

import java.awt.*; import javax.swing.*;

public class DrawIcon implements Icon{ private int width; private int height;

public void paintIcon(Component c, Graphics g, int x, int y) {

g.fillOval(x, y, width, height); }

public int getIconWidth() { // TODO 自动生成的方法存根 return this.width; }

public int getIconHeight() { // TODO 自动生成的方法存根 return this.height; }

public DrawIcon(int width,int height){ this.width=width; this.height=height; }

public static void main(String[] args){ DrawIcon icon=new DrawIcon(15, 15); JLabel jl1=new JLabel(\测试\, icon, SwingConstants.CENTER); JFrame jf=new JFrame();

Container c=jf.getContentPane(); c.add(jl1);

jf.setSize(200, 200); Dimension

screenSize=Toolkit.getDefaultToolkit().getScreenSize();

jf.setLocation((screenSize.width-jf.getWidth())/2,(screenSize.height-jf.getHeight())/2); jf.setResizable(false);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } }

? 创建图片图标

Swing中的图标除了可以绘制之外,还可以使用某个特定的图片创建。Swing利用javax.swing.ImageIcon类根据现有图片创建图标,ImageIcon类实现了Icon接口,同时Java支持多种图片格式。 ? 例子

import java.awt.*; import java.net.URL; import javax.swing.*;

public class Test extends JFrame{ public Test() {

Container c=getContentPane();

JLabel jl=new JLabel(\这是一个JFrame窗体\,SwingConstants.CENTER);

URL url=Test.class.getResource(\); Icon icon=new ImageIcon(url); jl.setIcon(icon); //设置标签的图标

jl.setHorizontalAlignment(SwingConstants.CENTER); //设置标签水平对齐方式

jl.setOpaque(true); //设置标签为不透明状态 c.add(jl);

setTitle(\图片图标\); setSize(250,150); Dimension

screenSize=Toolkit.getDefaultToolkit().getScreenSize();

setLocation((screenSize.width-this.getWidth())/2,(screenSize.height-this.getHeight())/2); //设置组件的位置为:水平和垂直居中 setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); }

public static void main(String[] args){ new Test(); } }

运行结果:

注意:java.lang.Class类中的getResource()方法可以获取资源文件的URL路径。例子中该方


Swing程序设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:PSA 制氮装置操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: