From c4291c27463ceaea39a7cd00435ed017c853d789 Mon Sep 17 00:00:00 2001 From: Elex Date: Mon, 1 Apr 2024 20:11:09 +0900 Subject: [PATCH] 2024-04-01 --- build.gradle.kts | 10 ++- .../main/kotlin/elex-application.gradle.kts | 2 + buildSrc/src/main/kotlin/elex-base.gradle.kts | 37 +++++---- .../src/main/kotlin/elex-library.gradle.kts | 12 +-- components/build.gradle.kts | 30 ++++++++ .../examples/components/FormApplication.java | 77 +++++++++++++++++++ .../components/HelloWorldApplication.java | 40 ++++++++++ .../examples/components/package-info.java | 6 ++ components/src/main/java/module-info.java | 7 ++ doc/01_application.md | 10 +++ doc/02_pane.md | 1 + doc/03_controls.md | 9 +++ doc/04_3d.md | 31 ++++++++ doc/05_canvas.md | 0 fxml/build.gradle.kts | 18 ++++- .../elex/examples/fxml/FxmlApplication.java | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 2 + three_d/build.gradle.kts | 30 ++++++++ .../kr/pe/elex/examples/three_d/Cameras.java | 18 +++++ .../kr/pe/elex/examples/three_d/Lights.java | 24 ++++++ .../pe/elex/examples/three_d/Materials.java | 9 +++ .../elex/examples/three_d/MyApplication.java | 52 +++++++++++++ .../kr/pe/elex/examples/three_d/Shapes.java | 54 +++++++++++++ .../elex/examples/three_d/package-info.java | 6 ++ three_d/src/main/java/module-info.java | 7 ++ 26 files changed, 464 insertions(+), 34 deletions(-) create mode 100644 components/build.gradle.kts create mode 100644 components/src/main/java/kr/pe/elex/examples/components/FormApplication.java create mode 100644 components/src/main/java/kr/pe/elex/examples/components/HelloWorldApplication.java create mode 100644 components/src/main/java/kr/pe/elex/examples/components/package-info.java create mode 100644 components/src/main/java/module-info.java create mode 100644 doc/01_application.md create mode 100644 doc/02_pane.md create mode 100644 doc/03_controls.md create mode 100644 doc/04_3d.md create mode 100644 doc/05_canvas.md create mode 100644 three_d/build.gradle.kts create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/Cameras.java create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/Lights.java create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/Materials.java create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/MyApplication.java create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/Shapes.java create mode 100644 three_d/src/main/java/kr/pe/elex/examples/three_d/package-info.java create mode 100644 three_d/src/main/java/module-info.java diff --git a/build.gradle.kts b/build.gradle.kts index c0b9187..26e6175 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,16 +8,24 @@ buildscript { repositories { maven { + name = "Nexus 3 Repository" url = uri(project.findProperty("repo.url") as String) + credentials { + username = project.findProperty("repo.username") as String + password = project.findProperty("repo.password") as String + } } } } plugins { base - id("com.github.ben-manes.versions") version "0.39.0" + id("com.github.ben-manes.versions") version "0.51.0" } subprojects{ + group = "com.elex-project" + version = "1.0-SNAPSHOT" + description = ""//todo } diff --git a/buildSrc/src/main/kotlin/elex-application.gradle.kts b/buildSrc/src/main/kotlin/elex-application.gradle.kts index 44d6044..fdbc00e 100644 --- a/buildSrc/src/main/kotlin/elex-application.gradle.kts +++ b/buildSrc/src/main/kotlin/elex-application.gradle.kts @@ -1,6 +1,7 @@ plugins { id("elex-base") application + } tasks.jar { @@ -13,3 +14,4 @@ tasks.jar { )) } } + diff --git a/buildSrc/src/main/kotlin/elex-base.gradle.kts b/buildSrc/src/main/kotlin/elex-base.gradle.kts index ef6cf95..0447540 100644 --- a/buildSrc/src/main/kotlin/elex-base.gradle.kts +++ b/buildSrc/src/main/kotlin/elex-base.gradle.kts @@ -2,21 +2,36 @@ plugins { java } -group = "com.elex-project" -version = "1.0-SNAPSHOT" -description = ""//todo +dependencies { + implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) + implementation("org.slf4j:slf4j-api:2.1.0-alpha1") + implementation("org.jetbrains:annotations:24.1.0") + + compileOnly("org.projectlombok:lombok:1.18.32") + annotationProcessor("org.projectlombok:lombok:1.18.32") + testAnnotationProcessor("org.projectlombok:lombok:1.18.32") + + testImplementation("ch.qos.logback:logback-classic:1.5.3") + testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.10.2") +} repositories { maven { + name = "Nexus 3 Repository" url = uri(project.findProperty("repo.url") as String) + credentials { + username = project.findProperty("repo.username") as String + password = project.findProperty("repo.password") as String + } } } java { withSourcesJar() withJavadocJar() - sourceCompatibility = org.gradle.api.JavaVersion.VERSION_11 - targetCompatibility = org.gradle.api.JavaVersion.VERSION_11 + sourceCompatibility = org.gradle.api.JavaVersion.VERSION_17 + targetCompatibility = org.gradle.api.JavaVersion.VERSION_17 } configurations { @@ -51,16 +66,4 @@ tasks.javadoc { (options as StandardJavadocDocletOptions).docEncoding = "UTF-8" } -dependencies { - implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) - implementation("org.slf4j:slf4j-api:2.0.6") - implementation("org.jetbrains:annotations:24.0.0") - compileOnly("org.projectlombok:lombok:1.18.26") - annotationProcessor("org.projectlombok:lombok:1.18.26") - testAnnotationProcessor("org.projectlombok:lombok:1.18.26") - - testImplementation("ch.qos.logback:logback-classic:1.4.5") - testImplementation("org.junit.jupiter:junit-jupiter:5.9.2") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.9.2") -} diff --git a/buildSrc/src/main/kotlin/elex-library.gradle.kts b/buildSrc/src/main/kotlin/elex-library.gradle.kts index 41ed01c..bf8d730 100644 --- a/buildSrc/src/main/kotlin/elex-library.gradle.kts +++ b/buildSrc/src/main/kotlin/elex-library.gradle.kts @@ -17,6 +17,7 @@ publishing { publications { create("mavenJava") { from(components["java"]) + artifactId = rootProject.name pom { // todo name.set("${rootProject.name} ${project.name}") @@ -49,7 +50,7 @@ publishing { organizationUrl.set("https://www.elex-project.com/") roles.set(arrayListOf("Developer", "CEO")) timezone.set("Asia/Seoul") - properties.set(mapOf("" to "")) + //properties.set(mapOf("" to "")) } } contributors { @@ -81,14 +82,7 @@ publishing { password = project.findProperty("repo.password") as String } } - maven { //todo - name = "mavenGithub" - url = uri("https://maven.pkg.git.elex-project.com/elex/${rootProject.name}") - credentials { - username = project.findProperty("github.username") as String - password = project.findProperty("github.token") as String - } - } + } } diff --git a/components/build.gradle.kts b/components/build.gradle.kts new file mode 100644 index 0000000..0f14278 --- /dev/null +++ b/components/build.gradle.kts @@ -0,0 +1,30 @@ + +plugins { + id("elex-application") + idea + id("org.openjfx.javafxplugin") version "0.1.0" + id("org.beryx.jlink") version "3.0.1" +} +application { + mainClass.set("kr.pe.elex.examples.components.HelloWorldApplication") + // mainModule.set("kr.pe.elex.examples.components") +} +javafx { + version = "23-ea+3" + modules = listOf("javafx.controls", "javafx.fxml") +} +jlink { + launcher { + name = project.name + } +} +idea{ + module { + isDownloadJavadoc=true + isDownloadSources=true + } +} +dependencies { + + +} diff --git a/components/src/main/java/kr/pe/elex/examples/components/FormApplication.java b/components/src/main/java/kr/pe/elex/examples/components/FormApplication.java new file mode 100644 index 0000000..2f873f5 --- /dev/null +++ b/components/src/main/java/kr/pe/elex/examples/components/FormApplication.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.components; + +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.PasswordField; +import javafx.scene.control.TextField; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Pane; +import javafx.scene.text.Font; +import javafx.scene.text.FontWeight; +import javafx.scene.text.Text; +import javafx.stage.Stage; + +public class FormApplication extends Application { + + private Pane contentPane() { + + + final GridPane rootPanel = new GridPane(); + + final Text heading = new Text("Log In "); + heading.setFont(Font.font("Serif", FontWeight.BOLD, 16)); + + final Label lblId = new Label("User Name"); + final TextField txtId = new TextField(); + final Label lblPassword = new Label("Password"); + final PasswordField txtPassword = new PasswordField(); + final Button btn1 = new Button("Login"); + final HBox hBox = new HBox(); + hBox.setAlignment(Pos.CENTER_RIGHT); + hBox.setPadding(new Insets(4,4,4,4)); + hBox.getChildren().add(btn1); + + + rootPanel.add(heading, 0,0,2,1); + rootPanel.add(lblId, 0,1); + rootPanel.add(txtId,1,1); + rootPanel.add(lblPassword, 0,2); + rootPanel.add(txtPassword,1,2); + rootPanel.add(hBox, 1,3,2,1); + + rootPanel.setAlignment(Pos.CENTER); + rootPanel.setHgap(4); + rootPanel.setVgap(4); + rootPanel.setPadding(new Insets(16,16,16,16)); + + btn1.setOnAction(event -> { + System.out.println(txtId.getText()); + System.out.println(txtPassword.getText()); + }); + + return rootPanel; + } + + @Override + public void start(Stage primaryStage) throws Exception { + + primaryStage.setTitle("Hello, World"); + primaryStage.setScene(new Scene(contentPane(), 800, 600)); + primaryStage.show(); + } + + public static void main(String... args) { + launch(args); + } +} diff --git a/components/src/main/java/kr/pe/elex/examples/components/HelloWorldApplication.java b/components/src/main/java/kr/pe/elex/examples/components/HelloWorldApplication.java new file mode 100644 index 0000000..54ba4fa --- /dev/null +++ b/components/src/main/java/kr/pe/elex/examples/components/HelloWorldApplication.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.components; + +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; +import javafx.stage.Stage; + +public class HelloWorldApplication extends Application { + + private Pane contentPane() { + final Button btn1 = new Button("Click"); + btn1.setOnAction(event -> { + System.out.println("Click!"); + }); + + final BorderPane rootPanel = new BorderPane(); + rootPanel.setCenter(btn1); + + return rootPanel; + } + + @Override + public void start(Stage primaryStage) throws Exception { + + primaryStage.setTitle("Hello, World"); + primaryStage.setScene(new Scene(contentPane(), 800, 600)); + primaryStage.show(); + } + + public static void main(String... args) { + launch(args); + } +} diff --git a/components/src/main/java/kr/pe/elex/examples/components/package-info.java b/components/src/main/java/kr/pe/elex/examples/components/package-info.java new file mode 100644 index 0000000..1dc252f --- /dev/null +++ b/components/src/main/java/kr/pe/elex/examples/components/package-info.java @@ -0,0 +1,6 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.components; \ No newline at end of file diff --git a/components/src/main/java/module-info.java b/components/src/main/java/module-info.java new file mode 100644 index 0000000..0b394ef --- /dev/null +++ b/components/src/main/java/module-info.java @@ -0,0 +1,7 @@ +module javafx.examples.components.main { + requires javafx.graphics; + requires javafx.controls; + requires javafx.fxml; + + exports kr.pe.elex.examples.components; +} diff --git a/doc/01_application.md b/doc/01_application.md new file mode 100644 index 0000000..59e6609 --- /dev/null +++ b/doc/01_application.md @@ -0,0 +1,10 @@ +# Application + + +1. j메인 클래스에서 javafx.application.Application를 상속하고, start()를 구현한다. +2. root 패널을 생성해서 레이아웃을 구현한다. +3. start()에서 전달받은 primaryStage에 setScene()을 사용해서 new Scene(root,w,h)을 넘겨준다. +4. start()메서드의 맨 뒤에 primaryStage.show()를 호출한다. +5. 메인 메서드에서 launch(args)를 호출하면 start()가 호출되고, GUI 창이 실행된다. + +https://docs.oracle.com/javase/8/javase-clienttechnologies.htm \ No newline at end of file diff --git a/doc/02_pane.md b/doc/02_pane.md new file mode 100644 index 0000000..76e173a --- /dev/null +++ b/doc/02_pane.md @@ -0,0 +1 @@ +# 패널 diff --git a/doc/03_controls.md b/doc/03_controls.md new file mode 100644 index 0000000..9dd4e9d --- /dev/null +++ b/doc/03_controls.md @@ -0,0 +1,9 @@ +# 컴포넌트 + +## Label + +## Button + +## TextField +### PasswordField + diff --git a/doc/04_3d.md b/doc/04_3d.md new file mode 100644 index 0000000..134bded --- /dev/null +++ b/doc/04_3d.md @@ -0,0 +1,31 @@ +# 3D + +## Shape3D < Node + +## MeshView < Shape3D + +## Box < Shape3D + +## Cylinder < Shape3D + +## Sphere < Shape3D + +## Mesh + +## TriangleMesh + +## PerspectiveCamera + +## PointLight + +## AmbientLight + +## PhongMaterial < Material +* diffuse color +* diffuse map +* specular map +* specular color +* specular power +* bump map / normal map +* self-illumination map + diff --git a/doc/05_canvas.md b/doc/05_canvas.md new file mode 100644 index 0000000..e69de29 diff --git a/fxml/build.gradle.kts b/fxml/build.gradle.kts index edfda85..9b666f2 100644 --- a/fxml/build.gradle.kts +++ b/fxml/build.gradle.kts @@ -7,17 +7,29 @@ plugins { id("elex-application") - id("org.openjfx.javafxplugin") version "0.0.10" - id("org.beryx.jlink") version "2.23.1" + idea + id("org.openjfx.javafxplugin") version "0.1.0" + id("org.beryx.jlink") version "3.0.1" } application { mainClass.set("kr.pe.elex.examples.fxml.FxmlApplication") mainModule.set("kr.pe.elex.examples.fxml") } javafx { - version = "11.0.2" + version = "23-ea+3" modules = listOf("javafx.controls", "javafx.fxml") } +jlink { + launcher { + name = project.name + } +} +idea{ + module { + isDownloadJavadoc=true + isDownloadSources=true + } +} dependencies { diff --git a/fxml/src/main/java/kr/pe/elex/examples/fxml/FxmlApplication.java b/fxml/src/main/java/kr/pe/elex/examples/fxml/FxmlApplication.java index d3f27a5..0f67891 100644 --- a/fxml/src/main/java/kr/pe/elex/examples/fxml/FxmlApplication.java +++ b/fxml/src/main/java/kr/pe/elex/examples/fxml/FxmlApplication.java @@ -1,7 +1,5 @@ /* - * JavaFx Examples - * - * Copyright (c) 2021. Elex. All Rights Reserved. + * Copyright (c) 2021-2024. Elex. All Rights Reesrved. * https://www.elex-project.com/ */ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8596f93..23a3b2e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -7,6 +7,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index c20794c..f70f44e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,3 +7,5 @@ rootProject.name = "javafx-examples" include("fxml") +include("components") +include("three_d") diff --git a/three_d/build.gradle.kts b/three_d/build.gradle.kts new file mode 100644 index 0000000..ac13f55 --- /dev/null +++ b/three_d/build.gradle.kts @@ -0,0 +1,30 @@ + +plugins { + id("elex-application") + idea + id("org.openjfx.javafxplugin") version "0.1.0" + id("org.beryx.jlink") version "3.0.1" +} +application { + mainClass.set("kr.pe.elex.examples.three_d.MyApplication") + // mainModule.set("kr.pe.elex.examples.components") +} +javafx { + version = "23-ea+3" + modules = listOf("javafx.controls", "javafx.fxml") +} +jlink { + launcher { + name = project.name + } +} +idea{ + module { + isDownloadJavadoc=true + isDownloadSources=true + } +} +dependencies { + + +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/Cameras.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/Cameras.java new file mode 100644 index 0000000..619dc3e --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/Cameras.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; + +import javafx.scene.Camera; +import javafx.scene.PerspectiveCamera; + +public class Cameras { + + public static Camera camera(){ + final Camera camera = new PerspectiveCamera(); + + return camera; + } +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/Lights.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/Lights.java new file mode 100644 index 0000000..450860e --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/Lights.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; + +import javafx.scene.AmbientLight; +import javafx.scene.PointLight; +import javafx.scene.paint.Color; + +public class Lights { + public static PointLight pointLight() { + final PointLight light = new PointLight(); + light.setColor(Color.YELLOW); + return light; + } + + public static AmbientLight ambientLight() { + final AmbientLight light = new AmbientLight(); + light.setColor(Color.GOLD); + return light; + } +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/Materials.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/Materials.java new file mode 100644 index 0000000..a49c5ca --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/Materials.java @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; + +public class Materials { +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/MyApplication.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/MyApplication.java new file mode 100644 index 0000000..d261421 --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/MyApplication.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; + +import javafx.application.Application; +import javafx.scene.*; +import javafx.scene.paint.Color; +import javafx.scene.paint.PhongMaterial; +import javafx.scene.shape.Box; +import javafx.scene.shape.DrawMode; +import javafx.scene.transform.Rotate; +import javafx.scene.transform.Translate; +import javafx.stage.Stage; + +public class MyApplication extends Application { + private Parent content(){ + Box box = new Box(5,5,5); + box.setMaterial(new PhongMaterial(Color.RED)); + box.setDrawMode(DrawMode.LINE); + + Camera camera = new PerspectiveCamera(true); + camera.getTransforms().addAll( + new Rotate(-20, Rotate.Y_AXIS), + new Rotate(-20,Rotate.X_AXIS), + new Translate(0,0,-15) + ); + + Group root = new Group(); + root.getChildren().add(box); + root.getChildren().add(camera); + + SubScene subScene = new SubScene(root, 300, 300); + subScene.setFill(Color.ALICEBLUE); + subScene.setCamera(camera); + Group group = new Group(); + group.getChildren().add(subScene); + return group; + } + public static void main(String... args){ + launch(args); + } + @Override + public void start(Stage primaryStage) throws Exception { + primaryStage.setTitle("3D Example"); + primaryStage.setResizable(false); + primaryStage.setScene(new Scene(content())); + primaryStage.show(); + } +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/Shapes.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/Shapes.java new file mode 100644 index 0000000..4181824 --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/Shapes.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; + +import javafx.scene.paint.Color; +import javafx.scene.paint.PhongMaterial; +import javafx.scene.shape.Box; +import javafx.scene.shape.Cylinder; +import javafx.scene.shape.Sphere; +import javafx.scene.shape.TriangleMesh; + +public class Shapes { + public static Box box(){ + final Box shape = new Box(100, 100, 30); + final PhongMaterial material = new PhongMaterial(); + material.setSpecularColor(Color.ORANGE); + material.setDiffuseColor(Color.RED); + shape.setMaterial(material); + return shape; + } + public static Cylinder cylinder(){ + final Cylinder shape = new Cylinder(100, 100); + final PhongMaterial material = new PhongMaterial(); + material.setSpecularColor(Color.BLUE); + material.setDiffuseColor(Color.LIGHTBLUE); + shape.setMaterial(material); + return shape; + } + public static Sphere sphere(){ + final Sphere shape = new Sphere(100); + final PhongMaterial material = new PhongMaterial(); + material.setSpecularColor(Color.BLUE); + material.setDiffuseColor(Color.LIGHTBLUE); + shape.setMaterial(material); + return shape; + } + + public static TriangleMesh triangleMesh(){ + final TriangleMesh shape = new TriangleMesh(); + final float[] points = {}; + shape.getPoints().addAll(points); + final float[] texCoords = {}; + shape.getTexCoords().addAll(texCoords); + final int[] faces = {}; + shape.getFaces().addAll(faces); + final int[] smoothingGroups = {}; + shape.getFaceSmoothingGroups().addAll(smoothingGroups); + + return shape; + } +} diff --git a/three_d/src/main/java/kr/pe/elex/examples/three_d/package-info.java b/three_d/src/main/java/kr/pe/elex/examples/three_d/package-info.java new file mode 100644 index 0000000..da60231 --- /dev/null +++ b/three_d/src/main/java/kr/pe/elex/examples/three_d/package-info.java @@ -0,0 +1,6 @@ +/* + * Copyright (c) 2024. Elex. All Rights Reesrved. + * https://www.elex-project.com/ + */ + +package kr.pe.elex.examples.three_d; \ No newline at end of file diff --git a/three_d/src/main/java/module-info.java b/three_d/src/main/java/module-info.java new file mode 100644 index 0000000..d07b68a --- /dev/null +++ b/three_d/src/main/java/module-info.java @@ -0,0 +1,7 @@ +module javafx.examples.fxml.main { + requires javafx.graphics; + requires javafx.controls; + requires javafx.fxml; + + exports kr.pe.elex.examples.three_d; +}