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); } }
随笔为本人学习笔记以及个人看法,若有错误,欢迎指正