spring boot 与swing配合使用(可实现窗口关闭项目仍然运行)

spring boot 与swing配合使用

  有些时候,我们可能需要在项目启动后,弹出一种可视化窗口,供运维人员来傻瓜式,按步骤操作,那就需要swing 了。
  今天刚接触swing ,关于它的定义我还是不要在这里说了,本篇只是实现了在springboot 项目启动后,弹出一个简单的swing 窗口,仅此而已。

1、关于引包

  javax.swing.* 包,不需要单独引入,本身在jdk 中,所以,我们不需要关注这个了。

2、具体写法

  关于swing 的配置,写到了springboot 项目的启动项位置,当然也可以抽出来,放到其他位置。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.swing.*;

/**
 * Created by Administrator on 2017/12/7.
 */
@SpringBootApplication
public class CloudUtilsApplication {

    public static void main(String[] args){
     //SwingUtilities.invokeLater的作用可以详细百度一下,我新手
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
        //spirng
        SpringApplication.run(CloudUtilsApplication.class,args);
    }
    private static void createAndShowGUI(){
        // 创建 JFrame 实例
        JFrame frame = new JFrame("Login Example");
        // Setting the width and height of frame
        frame.setSize(350, 200);
        /**
        * 下边的这句话,如果这么写的话,窗口关闭,springboot项目就会关掉,使用
        * dispose则不会
        */
//        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.dispose(); //如果写这句可实现窗口关闭,springboot项目仍运行
        /* 创建面板,这个类似于 HTML 的 div 标签
         * 我们可以创建多个面板并在 JFrame 中指定位置
         * 面板中我们可以添加文本字段,按钮及其他组件。
         */
        JPanel panel = new JPanel();
        // 添加面板
        frame.add(panel);
        /*
         * 调用用户定义的方法并添加组件到面板
         */
        placeComponents(panel);

        // 设置界面可见
        frame.setVisible(true);
    }
    private static void placeComponents(JPanel panel) {

        /* 布局部分我们这边不多做介绍
         * 这边设置布局为 null
         */
        panel.setLayout(null);

        // 创建 JLabel
        JLabel userLabel = new JLabel("User:");
        /* 这个方法定义了组件的位置。
         * setBounds(x, y, width, height)
         * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
         */
        userLabel.setBounds(10,20,80,25);
        panel.add(userLabel);

        /*
         * 创建文本域用于用户输入
         */
        JTextField userText = new JTextField(20);
        userText.setBounds(100,20,165,25);
        panel.add(userText);

        // 输入密码的文本域
        JLabel passwordLabel = new JLabel("Password:");
        passwordLabel.setBounds(10,50,80,25);
        panel.add(passwordLabel);

        /*
         *这个类似用于输入的文本域
         * 但是输入的信息会以点号代替,用于包含密码的安全性
         */
        JPasswordField passwordText = new JPasswordField(20);
        passwordText.setBounds(100,50,165,25);
        panel.add(passwordText);

        // 创建登录按钮
        JButton loginButton = new JButton("login");
        loginButton.setBounds(10, 80, 80, 25);
        panel.add(loginButton);
    }
}

  我在加入swing 的时候,发现,一旦关闭窗口,springboot 项目,也跟着关闭,很是郁闷,后来经过一个朋友帮忙,才知道上边的frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ,改为frame.dispose() 即可。

你可能感兴趣的:(spring boot 与swing配合使用(可实现窗口关闭项目仍然运行))