diff --git a/buildSrc/src/main/kotlin/elex-base.gradle.kts b/buildSrc/src/main/kotlin/elex-base.gradle.kts
index c9fc6db..60f0401 100644
--- a/buildSrc/src/main/kotlin/elex-base.gradle.kts
+++ b/buildSrc/src/main/kotlin/elex-base.gradle.kts
@@ -22,8 +22,8 @@ repositories {
java {
withSourcesJar()
withJavadocJar()
- sourceCompatibility = org.gradle.api.JavaVersion.VERSION_1_8
- targetCompatibility = org.gradle.api.JavaVersion.VERSION_1_8
+ sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11
+ targetCompatibility = org.gradle.api.JavaVersion.VERSION_11
}
configurations {
diff --git a/java-fx/build.gradle.kts b/java-fx/build.gradle.kts
new file mode 100644
index 0000000..7dda4a1
--- /dev/null
+++ b/java-fx/build.gradle.kts
@@ -0,0 +1,25 @@
+/*
+ * Examples for Java
+ *
+ * Copyright (c) 2021. Elex. All Rights Reserved.
+ * https://www.elex-project.com/
+ */
+
+plugins {
+ id("elex-java")
+ id("application")
+ id("org.openjfx.javafxplugin") version "0.0.10"
+ id("org.beryx.jlink") version "2.23.1"
+}
+application {
+ mainClass.set("kr.pe.elex.examples.FxmlApplication")
+ mainModule.set("kr.pe.elex.examples")
+}
+javafx {
+ version = "11.0.2"
+ modules = listOf("javafx.controls", "javafx.fxml")
+}
+dependencies {
+ //implementation("org.openjfx:javafx-controls:11.0.2")
+ //implementation("org.openjfx:javafx-fxml:11.0.2")
+}
diff --git a/java-fx/logback.xml b/java-fx/logback.xml
new file mode 100644
index 0000000..74ff8a3
--- /dev/null
+++ b/java-fx/logback.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
diff --git a/java-fx/src/main/java/kr/pe/elex/examples/FxmlApplication.java b/java-fx/src/main/java/kr/pe/elex/examples/FxmlApplication.java
new file mode 100644
index 0000000..d77e2ad
--- /dev/null
+++ b/java-fx/src/main/java/kr/pe/elex/examples/FxmlApplication.java
@@ -0,0 +1,33 @@
+/*
+ * Examples for Java
+ *
+ * Copyright (c) 2021. Elex. All Rights Reserved.
+ * https://www.elex-project.com/
+ */
+
+package kr.pe.elex.examples;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.layout.GridPane;
+import javafx.stage.Stage;
+
+public class FxmlApplication extends Application {
+ public static void main(String... args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ primaryStage.setTitle("Hello!");
+ primaryStage.setWidth(800);
+ primaryStage.setHeight(600);
+ //GridPane root = new GridPane();
+ Parent root = FXMLLoader.load(getClass().getResource ("/fxml/root.fxml"));
+ Scene scene = new Scene(root);
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+}
diff --git a/java-fx/src/main/java/module-info.java b/java-fx/src/main/java/module-info.java
new file mode 100644
index 0000000..69ca3b8
--- /dev/null
+++ b/java-fx/src/main/java/module-info.java
@@ -0,0 +1,6 @@
+module kr.pe.elex.examples {
+ requires javafx.graphics;
+ requires javafx.fxml;
+
+ exports kr.pe.elex.examples;
+}
diff --git a/java-fx/src/main/resources/fxml/root.fxml b/java-fx/src/main/resources/fxml/root.fxml
new file mode 100644
index 0000000..e9f9789
--- /dev/null
+++ b/java-fx/src/main/resources/fxml/root.fxml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 2b95233..6673134 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -12,5 +12,6 @@ include(
"ssh",
"web-socket-servlet", "web-socket-client",
"thread", "hibernate", "jdbc-sqlite",
- "xml", "jackson", "jsoup", "markdown", "network", "httpd"
+ "xml", "jackson", "jsoup", "markdown", "network", "httpd",
+ "swing", "java-fx"
)
diff --git a/swing/build.gradle.kts b/swing/build.gradle.kts
new file mode 100644
index 0000000..d2aab59
--- /dev/null
+++ b/swing/build.gradle.kts
@@ -0,0 +1,14 @@
+/*
+ * Examples for Java
+ *
+ * Copyright (c) 2021. Elex. All Rights Reserved.
+ * https://www.elex-project.com/
+ */
+
+plugins {
+ id("elex-java")
+}
+
+dependencies {
+
+}
diff --git a/swing/logback.xml b/swing/logback.xml
new file mode 100644
index 0000000..74ff8a3
--- /dev/null
+++ b/swing/logback.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
diff --git a/swing/src/main/java/kr/pe/elex/examples/HttpD.java b/swing/src/main/java/kr/pe/elex/examples/HttpD.java
new file mode 100644
index 0000000..4a5cb7a
--- /dev/null
+++ b/swing/src/main/java/kr/pe/elex/examples/HttpD.java
@@ -0,0 +1,53 @@
+/*
+ * Examples for Java
+ *
+ * Copyright (c) 2021. Elex. All Rights Reserved.
+ * https://www.elex-project.com/
+ */
+
+package kr.pe.elex.examples;
+
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.time.LocalDateTime;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Slf4j
+public class HttpD {
+ public static void main(String... args) throws IOException {
+ final ExecutorService threadPool = Executors.newCachedThreadPool();
+ HttpServer httpServer = HttpServer.create(new InetSocketAddress(18080), 0);
+ httpServer.setExecutor(threadPool);
+
+ httpServer.createContext("/", new HttpHandler() {
+ @Override
+ public void handle(final HttpExchange httpExchange) {
+ try {
+ httpExchange.getResponseHeaders().add("X-Datetime", LocalDateTime.now().toString());
+ String message = "
Hello, world!
";
+ //message += httpExchange.getRequestMethod();
+ //BufferedReader reader = new BufferedReader(new InputStreamReader(httpExchange.getRequestBody()));
+ //message += reader.readLine();
+ httpExchange.sendResponseHeaders(200, message.getBytes().length);
+ OutputStream os = httpExchange.getResponseBody();
+ os.write(message.getBytes());
+ os.flush();
+ os.close();
+ } catch (IOException e) {
+ }
+
+ }
+ });
+ httpServer.start();
+ }
+
+}