Java Swing入门简介

UI 组件简介

在开始学习 Swing 之前,必须回答针对真正初学者的一个问题:什么是 UI?初学者的答案是“用户界面”。但是因为本教程的目标是要保证您不再只是个初学者,所以我们需要比这个定义更高级的定义。

所以,我再次提出这个问题:什么是 UI?您可能把它定义成您按下的按钮、打字的地址栏 、打开和关闭的窗口,等等,这些都是 UI 的元素,但是除了在屏幕上看到的这些之外,还有更多都是 UI 元素。比如鼠标、键盘、音量、屏幕颜色、使用的字体,以及一个对象相对于另一个对象的位置,这些都包含在 UI 之中。实际上,在计算机和用户的交互之中扮演角色的任何对象都是 UI 的组成部分。这看起来足够简单,但是您应当惊讶的是,有许多人和大型公司已经为它努力了很多年。实际上,现在有的大学专业的惟一课程就是研究这种交互。
Swing是一个用于开发Java应用程序用户界面的开发工具包。它为Java提供了一个可视化的交互界面,使得程序可以脱离控制台运行。

现在我们来看一下Swing包中的具体内容

JFrame:代表一个界面的窗口,也就是一个程序的门面,我们在创建图形化界面的时候必须要首先创建这个窗口

JLabel:这是一个标签组件,仅仅用于显示文字,图像等内容。这是Swing最简单的一个组件。

JBtton:这是按钮组件,我们可以为其添加事件。

JTextField:这是一个单行文本框,用于接收输入的文本
JPasswordField:这是一个密码文本框

Jpanel:这是一个面板组件,相当于一个小容器

接下来我们通过一个简单的“HelloWorld”代码来看一下Java Swing的模样

package swing;

import java.awt.Container;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class HelloWorldSwing {
    
    
    /**{
     * 创建并显示GUI。出于线程安全的考虑,
     * 这个方法在事件调用线程中调用。
     */
private static JFrame frame;
private static JLabel label;
    private static void createAndShowGUI() {

         // 创建及设置窗口
        frame = new JFrame("HelloWorldSwing");
//创建容器
        Container c=frame.getContentPane();
        // 添加 "Hello World" 标签
        label = new JLabel("Hello World");

        //设置标签居中显示
        label.setHorizontalAlignment(SwingConstants.CENTER);
        c.add(label);

        // 显示窗口
        frame.setSize(500,500);
        frame.setVisible(true);
    }

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

上述代码可以看到,我们首先实例化了一个窗口,然后通过getContentPane()方法得到了一个Container类

我们应该有这样一个概念,Swing组件的窗口通常与组件和容器有关,所以在JFrame窗口对象创建完成后,我们需要调用getContentPane()方法将窗口转换成一个容器,然后在容器中添加各种组件并且设置布局。如果需要将组件添加至容器,我们可以使用Container类中的add()方法进行添加。
例如上述代码的:

c.add(label);

这段代码我们就是通过add()方法将我们的label组件添加到容器中去。

其实这个Swing无非就是将一个个组件添加到容器中去,设置组件的属性(对齐方式啊,颜色啊,大小啊),为组件添加响应事件(按了这个按钮会怎样,离开这个文本框会怎样等等),设置布局管理器(就是设置各个组件的排列方式)。

接下来我们修改上面的程序,我们为程序添加一个按钮,按下这个按钮之后,界面显示的文字我们让他变成“你好,世界”

public class HelloWorldSwing {
    
    
    /**{
     * 创建并显示GUI。出于线程安全的考虑,
     * 这个方法在事件调用线程中调用。
     */
    private static JFrame frame;
    private static JLabel label;
    private static JPanel jp1;
    private static JPanel jp2;
    private static Button change;
    private static void createAndShowGUI() {

       // 创建及设置窗口
         frame = new JFrame("Hello World");
        Container c=frame.getContentPane();
        // 添加 "Hello World" 标签
        label = new JLabel("Hello World");

        //实例化按钮组件
        change=new Button("change");

        //为按钮添加响应时间
        change.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub

                //改变标签中的文字
                label.setText("你好,世界");
            }
        });
        //设置居中显示
        label.setHorizontalAlignment(SwingConstants.CENTER);

        //实例化面板
        jp1=new JPanel();
        jp2=new JPanel();

        //向面板中添加内容
        jp1.add(label);
        jp2.add(change);

        //向容器中添加内容
        c.add(BorderLayout.NORTH,jp1);
        c.add(BorderLayout.SOUTH,jp2);

        // 显示窗口
        frame.setSize(500,500);
        frame.setVisible(true);
    }

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

我们可以看到,在上述代码中我们新添加了两个JPanel面板,这是为了将“标签”和“按钮”分离开,然后我们创建了一个按钮组件,为其添加了一个监听事件,事件的内容就是改变标签中的文字,接下来我们将“标签”和“按钮”分别添加入两个面板中,将面板按照“BorderLayout”的布局方式添加到容器中


再次强调一遍

Swing无非就是将一个个组件添加到容器中去,设置组件的属性(对齐方式啊,颜色啊,大小啊),为组件添加响应事件(按了这个按钮会怎样,离开这个文本框会怎样等等),设置布局管理器(就是设置各个组件的排列方式)。

扫描二维码关注公众号,回复: 12123090 查看本文章

Ok,有了这个概念之后我们就可以愉快的去学习Swing了

猜你喜欢

转载自blog.csdn.net/mrliqifeng/article/details/73610397