简单的Swing入门

关键词:
Swing入门、组件、事件、布局

摘 要:
相信很多人对Swing已经有所了解,只不过在工作中用得比较少。本案例主要是带领没接触过Swing的人入门,了解Swing的人重新温习,让大家体会到Swing编程的乐趣,喜欢上Swing。

1案例描述
本文侧重于介绍Swing以及Swing的使用

2.1 介绍Swing

2.1.1 Swing概述

Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。工具包中所有的包都是以Swing作为名称,例如javax.swing,javax.swing.event

2.1.2 组件

Swing包是Swing提供的最大包,它包含将近100个类和25个接口,几乎所有的Swing组件都在Swing包中,只有JtableHeader和JtextComponent是例外,它们分别在Swing.table和Swing.text中。
Swing中的组件命名很容易理解,都是以J开头。常用的组件有:JFrame、JButton、JLabel、JTree、JTextPane,下面是JTextPane类简单的继承关系:


2.1.3 事件
光是一个躯壳还远远不够,最重要的是要赋予它行为能力。Swing中处理事件的方法一般是注册监听器以监听事件源产生的事件通过addXXXListener方法来添加一个监听(如通过ActionListener来响应用户点击的按钮,在ActionListener中的actionPerformed方法来实现),常见的监听器有MouseListener、MouseMotionListener等等。

2.1.4 布局
布局管理器用来负责容器中所有组件的尺寸与排列方式,也就是说,当开发者将组件扔到容器中后,组件在容 器中如何排列与组件显示的尺寸都交付给该容器的布局管理器全权负责,容器本身只负责承载其内部的组件,并不对子组件的排列方式进行干预。 所以对于Swing的使用,掌握如何使用布局是非常重要的。当我们要为一个容器指定一个布局的时候调用容器的 setLayout 方法即可,由于此项机制,我们可以在运行时动态改变容器的布局。Swing中常用的几种布局方式有:
BorderLayout: 只管里容器中的5个组件的排列方式,这五个组件的位置分别位于 东、南、西、北、中 方向分别对应 North, South, West, East 和 Center 。
FlowLayout 是一种比较简单的布局方式,它会将所有组件排列成一行,以组件的preferredSize显示,一般情况下,如果一行显示不了所有的组件,会自动换到下一行显示。
另外还有GridLayout,对容器中的组件进行网格式的排列。CenterLayout,只管里容器中的一个组件,使其在容器中居中。 FlowWrapLayout,FlowLayout的改进版,可以指定每行的最大宽度,如果大于指定宽度则开发换行。

2.2 创建图形界面步骤

(1) 导入Swing包
大部分Swing程序用到了AWT的基础底层结构和事件模型,因此需要导入两个包:
import java.awt.*; import java.awt.event.*;
如果图形界面中包括了事件处理,那么还需要导入事件处理包:
import javax.swing.event.*;
(2) 选择界面风格
Swing允许选择程序的图形界面风格常用的有java风格,windows风格等
下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。
try {	 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e1) {
e1.printStackTrace();
}


( 3 ) 设置顶层容器
图形界面至少要有一个顶级Swing容器 顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持 。
常用的顶级容器:
JFrame(框架):表示主程序窗口
public class MainFrame extends JFrame {

public MainFrame() {
super("JFrame");
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e1) {
e1.printStackTrace();
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置默认关闭
setLayout(null);// 布局方式
pack();// 调整此窗口的大小,以适合其子组件的首选大小和布局。
setSize(600, 400);
setLocationRelativeTo(null);// 设置此窗口相对于指定组件的位置。为null表示在屏幕中央

}

public static void main(String[] args) {
MainFrame frame = new MainFrame();
frame.setVisible(true);
}
}



JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):在浏览器内显示一个小程序界面

( 4 ) 设置按钮和标签
JLabel str = new JLabel("Hello");	
JButton ok = new JButton("确认");
str.setBounds(80, 30, 100, 22);// 设置坐标和大小ok.setBounds(60, 60, 80, 22);
  

(5)将组件放到容器上
frame.getContentPane().add(str, BorderLayout.CENTER);
frame.getContentPane().add(ok, BorderLayout.SOUTH);



(6)处理事件

ok.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "你好");//模式对话框
}
}); 
 

(7)其他
3 总结

本案例简单的介绍了Swing入门的一些组件、事件和布局,由于自身对Swing的了解有限,暂时只总结了这些,通过对Swing的不断了解也会对此文档作出完善。同时在学习Swing的过程中最重要的还是通过API来学习,学好Swing除了掌握它的基本用法之外还需要不断的积累。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值