LoginSignup
0
0

Spring BootでSwingアプリケーションを動かす

Posted at

Spring BootでSwingアプリケーションを動かす方法を示します。

まずmainメソッドは以下の通りになります。Headlessをfalseにすることが重要です。

HelloWorldApplication.java
package com.example;

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

@SpringBootApplication
public class HelloWorldApplication {

	public static void main(String[] args) {
		SpringApplication springApplication = new SpringApplication(HelloWorldApplication.class);
		springApplication.setHeadless(false);
		springApplication.run(args);
	}

}

次に、ApplicationRunnerを実装したクラスを作成し、runメソッドにSwingアプリケーションをコーディングします。このrunメソッドが処理の実質的なエントリポイントになっています。

HelloWorldApplicationRunner.java
package com.example;

import java.awt.Font;

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

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Component
public class HelloWorldApplicationRunner implements ApplicationRunner {

	@Override
	public void run(ApplicationArguments args) throws Exception {
		JFrame frame = new JFrame("Hello World App");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JLabel label = new JLabel("Hello World!!!");
		label.setFont(new Font(Font.SERIF, Font.BOLD, 100));
		frame.add(label);
		
		frame.pack();
		frame.setVisible(true);
	}

}

では動かしてみましょう。以下のコマンドで、jarファイルを作成します。

D:\pleiades\workspace\HelloWorld>mvnw.cmd clean package

作成したjarファイルを実行します。

D:\pleiades\workspace\HelloWorld>java -jar target\HelloWorld-0.0.1-SNAPSHOT.jar

すると、作成したSwingアプリケーションが起動します。

image.png

環境情報①

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.2.0</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>HelloWorld</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>HelloWorld</name>
	<description>HelloWorld project for Spring Boot</description>
	<properties>
		<java.version>21</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

環境情報②

D:\pleiades\workspace\HelloWorld>javac -version
javac 21-beta

D:\pleiades\workspace\HelloWorld>java -version
openjdk version "21-beta" 2023-09-19
OpenJDK Runtime Environment Temurin-21+35-202309042131 (build 21-beta+35-ea)
OpenJDK 64-Bit Server VM Temurin-21+35-202309042131 (build 21-beta+35-ea, mixed mode, sharing)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0