SpringBoot启动一个swing窗体

1、编辑主窗口类,作为单实例Bean组件。(注解默认单实例,@scope=“singleton”)

package com.yjc.sys.rac;

import org.springframework.context.Lifecycle;
import org.springframework.stereotype.Component;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;

/**
 * @author YQA_Administrator
 * @date 2021/12/13 13:53
 * @value jf 窗体对象
 * @value jl 展示标签
 */

@Component
public class MainWin extends JFrame {
    Container container = null;
    JLabel jl = null;
    URL url = MainWin.class.getResource("/images/teamcenter_app_32.gif");

    public MainWin() {
        container = this.getContentPane();
        jl = new JLabel("这是一个JFrame窗体");
        //使标签上的文字居中
        jl.setHorizontalAlignment(SwingConstants.CENTER);
        //将标签添加到容器中
        container.add(jl);
        //设置容器的背景颜色
        container.setBackground(Color.white);
        //设置窗体大小
        this.setSize(700, 500);
        //设置窗体关闭方式
     //1.不做任何反应。 * 2.仅仅隐藏。 * 3.关闭窗口。 * 4.关闭窗口,并结束所有线程。 * 注意:默认是2,你会发现窗口虽然不见了,但在任务管理器中还存在,这将导致springIoc容器不能自动清理关闭
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); ImageIcon icon = new ImageIcon(url); // 为标签设置图片 jl.setIcon(icon); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { super.windowClosing(e); System.out.println("管理"); //do something }; }); init(); } public void init() { //设置图标 setIcon(); //使窗体可视 this.setVisible(true); } void setIcon() { Image icon = Toolkit.getDefaultToolkit().getImage(url); this.setIconImage(icon); } }

 

 

2、利用SpringApplicationBuilder工厂,创建builder,调用builder.headless(false)方法,避免启动报错。

  要注意的是:

    1)利用Spring工具快速启动的方式,SpringApplication.run(RacApplication.class)的方式不能处理jaw相关的类

    2) 一定要为窗体设置关闭方式,setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

  

package com.yjc.sys;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;

/**
 * @author Administrator
 */
@SpringBootApplication
//@ComponentScan("com.yjc.sys.rac")
public class RacApplication {
    public static void main(String[] args) {
        SpringApplication.run(RacApplication.class);
        SpringApplicationBuilder builder = new SpringApplicationBuilder(RacApplication.class);
        builder.headless(false).run(args);
    }
}

 

posted @ 2021-12-13 19:41  我吃柠檬  阅读(2828)  评论(0编辑  收藏  举报