Swing程序设计

一、Swing

1、Swing概述

       Swing是一个用于开发Java应用程序用户界面的开发工具包。以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。原来的AWT组件来自java.awt 包,当含有AWT组件的Java应用程序在不同的平台上执行时,每个平台的GUI组件的显示会有所不同,但是在不同平台,上运行使用Swing开发的应用程序时,就可以统一GUI组件的显示风格,因为Swing组件允许编程人员在跨平台时指定统一的外观和风格。Swing有一下特点:

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

2、Swing组件的类的层次和继承关系

       在Swing组件中大多数GUI组件都是Component类的直接子类或间接子类,JComponent类是Swing组件各种特性的存放位置,这些组件的特性包括设定组件边界、GUI组件自动滚动等。

       在Swing 组件中最重要的父类是Container 类,而Container 类有两个最重要的子类,分别为java.awt:Window与java.awt.Frame,除了以往的AWT类组件会继承这两个类之外,现在的Swing组件也扩展了这两个类。从上图中可以发现,项层父类是Component类与Container类,所以Java关于窗口组件的编写,都与组件以及容器的概念相关联。

3、常用Swing组件

 

二、常用窗体

1、JFrame窗体

       JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些Swing组件的容器。在开发应用程序时可以通过继承java.swing.JFrame类创建一个窗体, 在这个窗体中添加组件,同时为组件设置事件。由于该窗体继承了JFrame类,所以它拥有“ 最大化”“最小化”“关闭”等按钮。

       JFrame语法:

JFrame jf = new JFrame(title); 
Container container = jf.getContentPane();

       Swing组件的窗体通常与组件和容器相关,所以在JFrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。通常,这个容器用来包含和显示组件。如果需要将组件添加至容器,可以使用来自Container类的add()方法进行设置。

例:

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

public class MyJFrame extends JFrame{
	public void CreateJFrame(String title) { // 定义一个CreateJFrame()方法
		JFrame jf = new JFrame(title); // 实例化一个JFrame对象
		Container container = jf.getContentPane(); // 获取一个容器
		JLabel jl = new JLabel("这是一个JFrame窗体"); // 创建一个JLabel标签		
		jl.setHorizontalAlignment(SwingConstants.CENTER);// 使标签上的文字居中
		container.add(jl); // 将标签添加到容器中
		container.setBackground(Color.white);//设置容器的背景颜色
		jf.setVisible(true); // 使窗体可视
		jf.setSize(200, 150); // 设置窗体大小		
		jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// 设置窗体关闭方式
	}
	
	public static void main(String args[]) {
		new MyJFrame().CreateJFrame("JFrame窗体标题");
	}
}

输出:

       JFrame类的常用构造方法:

  • public JFrame()。
  • public JFrame(String title)。

       JFrame类中的两种构造方法分别为无参的构造方法与有参的构造方法,第1种形式的构造方法可以创建一个初始不可见、没有标题的新窗体;第2种形式的构造方法在实例化该JFrame对象时可以创建一个不可见但具有标题的窗体。可以使用JFrame对象调用show()方法使窗体可见,但是该方法早已被新版JDK所弃用,通常使用setVisible(true)方法使窗体可见。

       创建窗体后,需要给予窗体一个关闭方式,可以调用setDefaultCloseOperation0方法关闭窗体。Java为窗体关闭提供了多种方式,常用的有以下4种:

  • DO_NOTHING_ON_CLOSE:什么都不做就将窗体关闭
  • DISPOSE_ON_CLOSE:任何注册监听程序对象后会自动隐藏并释放窗体
  • HIDE_ON_CLOSE:隐藏窗口的默认窗口关闭
  • EXIT_ON_CLOSE:退出应用程序默认窗口关闭

2、JDialog窗体

       JDialog窗体是Swing组件中的对话框,它继承了AWT组件中的java.aw.Dialog类。

       JDialog窗体的功能是从一个窗体中弹出另-一个窗体,就像是在使用IE浏览器时弹出的确定对话框一样。JDialog窗体实质上就是另一种类型的窗体,它与JFrame 窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。

       在应用程序中创建JDialog窗体需要实例化JDialog类,通常使用以下几个JDialog类的构造方法。

  • publicJDialog():创建一个没有标题和父窗体的对话框。
  • public JDialog(Frame f):创建一个指定 父窗体的对话框,但该窗体没有标题。
  • public JDialog(Frame f,boolean model):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。
  • public JDialog(Frame f,String title):创建一个指定标题和父窗体的对话框。
  • public JDialog(Frame f,String tl,oolean model):创建一个指定标题、窗体和模式的对话框。

例:

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

class MyJDialog extends JDialog{
	public MyJDialog(MyFrame frame) {
		// 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
		super(frame, "第一个JDialog 窗体", true);
		Container container = getContentPane();
		container.add(new JLabel("这是一个对话框"));
		setBounds(120, 120, 100, 100);
	}
}

public class MyFrame extends JFrame{
	public static void main(String args[]) {
		new MyFrame();
	}
	
	public MyFrame() {
		Container container = getContentPane();
		container.setLayout(null);
		
		JLabel jl = new JLabel("JFrame窗体标题");
		jl.setHorizontalAlignment(SwingConstants.CENTER);
		container.add(jl);
		
		JButton bl = new JButton("弹出对话框");
		bl.setBounds(10, 10, 100, 21);
		// 为按钮添加鼠标单击事件
		bl.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new MyJDialog(MyFrame.this).setVisible(true);				
			}
		});
		container.add(bl);
		
		container.setBackground(Color.white);
		setSize(200, 200);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		setVisible(true);
	}
}

输出:

 

三、标签组件与图标

1、标签的使用

       标签由JLabel类定义,它的父类为JComponent类。

       标签可以显示一行只读文本、一个图像或带图像的文本,它并不能产生任何类型的事件,只是简单地显示文本和图片,但是可以使用标签的特性指定标签上文本的对齐方式。

JLabel常用的几个构造方法如下:

  • public JLabel():创建一个不带 图标和文本的JLabel对象。
  • public JLabe(Icon icon):创建-一个带图标的JLabel 对象。
  • public JLabel(Icon icon,int aligment):创建一个带 图标的JLabel对象,并设置图标水平对齐方式。
  • public JLabel(String text,int aligment):创建一个带文本的JLabel 对象,并设置文字水平对齐方式。
  • public JLabel(String text,con icon,int aligment):创建一个带文本、带图标的JLabel对象,并设置标签内容的水平对齐方式。

2、图标的使用

       Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics 类提供的功能方法来创建。

(1)创建图标

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

  • public int getIconHeight):获取图标高;
  • public int getIconWidth():获取图标宽;
  • public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3):在指定坐标位置画图。

(2)使用图片图标

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

       ImageIcon类有多个构造方法,下面是其中几个常用的构造方法。

  • public Imagelcon(:该构造方法创建一个通用的Imagelcon对象,当真正需要设置图片时再使用ImageIcon对象调用setImage(Image image)方法来操作。
  • public ImageIcon(Image image):可以直接从图片源创建图标。
  • public Imagelcon(Image image,String description);除了可以从图片源创建图标之外,还可以为这个图标添加简短的描述,但这个描述不会在图标上显示,可以使用getDescription0方法获取这个描述。
  • public ImageIcon(URL ur):该构造方法利用位于计算机网络上的图像文件创建图标。

例:

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

public class MyImageIcon extends JFrame{
	public MyImageIcon() {
		Container container = getContentPane();
		JLabel jl = new JLabel("这是一个JFrame窗体", JLabel.CENTER);
		// 获取图片所在的URL
		URL url = MyImageIcon.class.getResource("imageButton.jpg");
		Icon icon = new ImageIcon(url);
		jl.setIcon(icon);
		jl.setHorizontalAlignment(SwingConstants.CENTER);
		jl.setOpaque(true);
		container.add(jl);
		setSize(250, 100);
		
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值