如何用Java创建一个简单的Swing应用程序
来源:才华咖 本文已影响4.58K人
来源:才华咖 本文已影响4.58K人
引导语:Swing是一组Java程序元件,它能够创建图象用户接口(GUI)元件,如按钮和滚动条,它们独立于特定操作系统的开窗口系统。以下是本站小编分享给大家的如何用Java创建一个简单的Swing应用程序,希望大家喜欢!
先给出一段代码,这是一个很简单的Swing程序,然后在对程序内容作详细讲述。
A simple Swing program
1 import g.*;
2 import .*;
3 public class SwingDemo{
4 public SwingDemo(){
5 JFrame jfrm=new JFrame("A Simple Swing Application");
6 ize(275,100);
7 efaultCloseOperation(_ON_CLOSE);
8 JLabel jlab=new JLabel("This is a text label.");
9 (jlab);
10 isible(true);
11 }
12 public static void main(String[] args){
13 keLater(new Runnable(){
14 public void run(){
15 new SwingDemo();
16 }
17 });
18 }
19 }
Swing是用来弥补AWT的不足的,但是不能取代它,所以Swing GUI程序开头都是包含进来swing包和awt包。GUI程序不同于传统的控制台程序,它可是有个很形象的窗口呈现给用户的,所以实现出来显得很亲切,我们从实现出来的这个窗口来推理下代码应该包括什么内容。窗口是windows里最常见的了,一个窗口里有标题栏工具栏按钮等等一系列的组件,这些组件不是漂浮于空中的,而是生存在这个窗口里的,这个窗口对应着Swing程序里的容器这个概念。大体上就是这样的过程:先设计出容器,再设计出组件,然后把组件添加到容器中并合理的布局,布局完全是美观的需要,这样就写出来一个SwingGUI程序了。注意这里的容器和组件的关系看着很简单,就是容器为根,它可以容纳组件。然而实际的java类库里不是这么看待二者的,容器和组件浑然一体的,容器也是一种组件,容器内也可以再放容器,简单的说就是组件套组件,可以套组件的组件就叫容器了。这种包含层次的结构要求其顶部必须是一个顶级容器。Swing定义了4种顶级容器:JFrame,JApplet,JWindow,JDialog。这些容器继承自AWT类的`Component和Container,说它们顶级是在 Swing的框架内说的,放到AWT中还是小弟,当不了老大,不过在Swing组件库中确实一手遮天,表现在顶层容器不包含在任何其他的容器中并且每个包含层次必须从顶层容器开始,这4个容器称作重量级容器。除了这4个顶级容器,其它的Swing组件都是从JComponent类派生的。例如用于标签的类 JLabel,用于按钮的类JButton,用于复选框的类JCheckBox。既然有重量级容器,同样就有轻量级容器,如 JPanel,JScrollPane,JRootPane。这些当然也是派生自JComponent类了。它们经常用于组织和管理一组相关的组件。
关于Swing组件的基本体系搞懂了,接下来就考虑组件怎么加到容器里,代码第9行告诉了我们答案,看起来确实很简单,再考虑一个问题,如果我加了很多组件进来,那么这些组件怎么摆放呢,这段代码只加了一个,看不出来问题,如果加了一堆组件进来会不会窗口显得很凌乱呢。这就需要布局管理器来帮忙了。代码中看不到布局管理器对象,这是因为采用了默认的BorderLayout,注意这里的默认是针对JFrame而言的,不同的顶级容器的默认布局管理器可能不一样。布局管理器多数由AWT提供的,Swing也提供了自己的几种,它们都是实现了LayoutManager接口的实例(某些还会实现 LayoutManager2接口)。
现在组件放到容器里了,并且也合理的布局了,还遗漏了一些问题,比如说这些组件(包括容器)该起个名字吧,不过这个不用操心,因为生成这个组件对象的时候就往构造函数里传了参数用来起名字了。还有个问题是容器的大小,假如容器芝麻的大小你却往里放个西瓜大的组件,根本显示不出来嘛。所以容器是要定制大小的,setSize()可以满足需要,一般的组件是不需要这个函数来定制大小的,大小都是随容器变化的,所以芝麻大小的容器是不会塞一个西瓜大的组件的,但是却是个比芝麻还小的组件,和显示不出来区别不大。
到了这里感觉还缺点什么,对了,还缺事件的处理机制,比如说点关闭按钮窗口会怎么样。这里简单的调用一个方法,setDefaultCloseOperation(),传进的一个整型参数好比一个遥控器上的数字键,决定了这个操作的行为。事件的处理机制隐藏于这个方法的实现中。第10行的setVisible()作用是显示框架,初学者可能会忘记,不过这几乎是GUI代码的必备语句。最后的main方法看着有点不知所云,简单解释下,在所有情况下,Swing GUI必须通过使用invokeLater()在事件调度线程上创建。这行代码硬记住就行了。从语法上说用了一个匿名类。
JavaEE5与Glassfish应用服务器详解
java Runnable接口如何创建线程
Java如何实现简单的whois查询
Java入门教程:如何使用一个Java
Java GUI:SWT/Swing/AWT的介绍及比较
java的String=a; a==null和a.equals(null)这两个判断有什么区别
JavaScript如何实现JSON.stringify
用Javascript进行简单的Table点击排序
sun认证java程序员须知Java日志框架
简单java程序创建方法
Java中如何获取Spring中配置的bean
解析Java中如何获取Spring中配置的bean
Javascript中的isNaN函数使用
Java类如何获取Spring的bean
Java新手如何学习Spring框架
程序员如何写一份生动的简历
JavaScript instanceof 的使用方法有哪些
如何搭建Java程序开发环境
Sun认证之Java程序员(SCJP)技巧
Sun认证Java程序员(SCJP)考试
用人单位如何筛选简历
如何使用记事本编写java程序
Javascript实例教程如何使用HoTMetal
linux下执行java程序的sh脚本教程
Javascript中arguments对象的详解和使用方法
关于JavaScript substring()的使用方法
java中spring的几个重要类和接口
如何使用Swing编写全屏程序
javascript编程常用知识的应用
使用JavaScript实现Java的List功能
java程序员个人简历
网页程序设计之实用JavaScript代码段
windows下JAVA敏捷开发环境搭建步骤
Java中的Graphics2D类基本使用的教程
如何使用Swing编写全屏程序
关于javascript使用isNaN()函数判断变量是否为数字
如何在Dreamweaver中为网页插入Java程序
javascript中toString()的用法
JavaScript在Android的WebView中parseInt函数转换不正确
A Lifeguard at Johns Beach Saved a Drowning Child,A Lifeguar英语作文