Swing入门

时间:2022-01-02 04:17:55

厌倦了在控制台使用键盘输入并显示结果的过程?是的,在你现在这台电脑上,已经很少有程序使用这种交互方式。本实验将带你初步进入图形用户界面(GUI)的世界,让你学会如何编写屏幕上那些具有特定大小和位置的窗体程序,并在其中添加文本,处理用户的输入。通过学习,可以让你的程序真正地“有头有脸”——具有更好的人机交互性能。

1. GUI和MVC

图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。 ——来自 百度百科 · GUI

Swing便是Java中的一个GUI,它是基于MVC(模型-视图-控制器)设计模式来进行设计的,通过事件对用户的输入进行反应。即使是最简单的一个按钮,也是包含了它的外观(什么颜色,有多大)、内容(按钮上面显示什么文字等)以及行为(对于用户按下时的反应)这三个要素。

比如,你在进行实验的时候,摆在你面前、在你的电脑屏幕上显示的内容,就是视图;你在实验环境中每一次的鼠标点击、输入的内容,,都有专门的模块来负责处理你的这些输入,可以理解为控制器;而你写的代码、实验时的环境,这些内容,都称之为模型。

下图表示了MVC组件类型的关系和功能。 

Swing入门

2. 初始Swing

Swing 是在抽象窗口工具箱(AWT)的架构上发展而来的一个用户界面库,整个可视组件库的基础构造块是 JComponent。它是所有组件的父类,为所有组件提供了绘制的基础架构。换言之,所有的Swing组件都是由它派生而来。

基于Swing制作的Java程序就是由一个一个的组件构成的,开发的过程有点像组装乐高积木。下面我们就通过实验来熟悉一些基本的组件。

public class MySwingWindow { public static void main(String[] args) { // TODO Auto-generated method stub } }

2.1 盛放控件的盘子——JFrame

JFrame 类就是一个容器,允许你把其他组件添加到它里面,把它们组织起来,并把它们呈现给用户。JFrame 在大多数操作系统中是以窗口的形式注册的,这意味着你可以对其进行最小化和最大化,甚至移动这个窗口。

如果要打个比方的话,你的脸就是一个容器,眼睛、耳朵、鼻子和嘴巴这些“控件”需要放在脸上,别人看到你这个“界面”实际上就是你的脸,以及上面的“控件”。

不同的教材对于JFrame的称呼是有差别的。这里我们称之为“窗体”。

下面是它包含的一些方法的用法和说明:

方法说明
get/setTitle()   获取/设置窗体的标题  
get/setState()   获取/设置窗体的最小化、最大化等状态  
is/setVisible()   获取/设置窗体的可视状态,换言之,是否在屏幕上显示  
get/setLocation()   获取/设置窗体在屏幕上在什么位置出现  
get/setSize()   获取/设置窗体的大小  
add()   将组件添加到窗体中,这个过程把各个控件形成了一个整体  

对于 Swing 应用程序,我们如果要将组件放在 JFrame 上,则需要继承JFrame 类。我们来尝试创建一个窗体吧。

主要的代码如下:

import javax.swing.JFrame; public class MySwingWindow extends JFrame { //在窗体的构造方法中设置窗体的各项属性 public MySwingWindow(){ //使用super()类引用父类的成分,用this来引用当前对象。 super(); //设置窗体大小 this.setSize(400, 300); // //返回此窗体的 contentPane 对象,设置其布局 this.getContentPane().setLayout(null); this.setTitle("My First Swing Window"); } public static void main(String[] args) { // TODO Auto-generated method stub MySwingWindow window = new MySwingWindow(); window.setVisible(true); } }