Alter 7 files
Add `.gitignore` Add `pom.xml` Add `module-info.java` Add `App.java` Add `Controller.java` Add `TodoObject.java` Add `primary.fxml`
This commit is contained in:
commit
af94ecb129
7 changed files with 228 additions and 0 deletions
46
.gitignore
vendored
Normal file
46
.gitignore
vendored
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
### Java ###
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
|
||||||
|
### Maven ###
|
||||||
|
target/
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
### Maven Patch ###
|
||||||
|
# Eclipse m2e generated files
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
51
openjfx-todo/pom.xml
Normal file
51
openjfx-todo/pom.xml
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
<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 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>net.akpain.todo</groupId>
|
||||||
|
<artifactId>_01-openjfx-intro</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjfx</groupId>
|
||||||
|
<artifactId>javafx-controls</artifactId>
|
||||||
|
<version>19</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjfx</groupId>
|
||||||
|
<artifactId>javafx-fxml</artifactId>
|
||||||
|
<version>19</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.0</version>
|
||||||
|
<configuration>
|
||||||
|
<release>11</release>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.openjfx</groupId>
|
||||||
|
<artifactId>javafx-maven-plugin</artifactId>
|
||||||
|
<version>0.0.6</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<!-- Default configuration for running -->
|
||||||
|
<!-- Usage: mvn clean javafx:run -->
|
||||||
|
<id>default-cli</id>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>net.akpain.todo.App</mainClass>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
7
openjfx-todo/src/main/java/module-info.java
Normal file
7
openjfx-todo/src/main/java/module-info.java
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module net.akpain.todo {
|
||||||
|
requires javafx.controls;
|
||||||
|
requires javafx.fxml;
|
||||||
|
|
||||||
|
opens net.akpain.todo to javafx.fxml;
|
||||||
|
exports net.akpain.todo;
|
||||||
|
}
|
38
openjfx-todo/src/main/java/net/akpain/todo/App.java
Normal file
38
openjfx-todo/src/main/java/net/akpain/todo/App.java
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
package net.akpain.todo;
|
||||||
|
|
||||||
|
import javafx.application.Application;
|
||||||
|
import javafx.fxml.FXMLLoader;
|
||||||
|
import javafx.scene.Parent;
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* JavaFX App
|
||||||
|
*/
|
||||||
|
public class App extends Application {
|
||||||
|
|
||||||
|
private static Scene scene;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start(Stage stage) throws IOException {
|
||||||
|
scene = new Scene(loadFXML("primary"), 400, 400);
|
||||||
|
stage.setScene(scene);
|
||||||
|
stage.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setRoot(String fxml) throws IOException {
|
||||||
|
scene.setRoot(loadFXML(fxml));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Parent loadFXML(String fxml) throws IOException {
|
||||||
|
FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml"));
|
||||||
|
return fxmlLoader.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
launch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
59
openjfx-todo/src/main/java/net/akpain/todo/Controller.java
Normal file
59
openjfx-todo/src/main/java/net/akpain/todo/Controller.java
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
package net.akpain.todo;
|
||||||
|
|
||||||
|
import javafx.event.ActionEvent;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.control.CheckBox;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
import javafx.scene.input.KeyEvent;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
|
import javafx.scene.layout.VBox;
|
||||||
|
|
||||||
|
public class Controller {
|
||||||
|
|
||||||
|
public VBox todoDisplayBox;
|
||||||
|
public TextField todoTextField;
|
||||||
|
|
||||||
|
public Controller() {
|
||||||
|
todoDisplayBox = new VBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void addTodo() {
|
||||||
|
String input = todoTextField.getCharacters().toString();
|
||||||
|
|
||||||
|
if (input.length() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
HBox p = new HBox(10);
|
||||||
|
CheckBox cb = new CheckBox();
|
||||||
|
cb.onMouseClickedProperty().set(this::checkBoxChecked);
|
||||||
|
|
||||||
|
p.getChildren().add(cb);
|
||||||
|
p.getChildren().add(new Label(input));
|
||||||
|
|
||||||
|
todoDisplayBox.getChildren().add(p);
|
||||||
|
todoTextField.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkBoxChecked(MouseEvent event) {
|
||||||
|
System.out.printf("checkbox checked %s\n", event.toString());
|
||||||
|
CheckBox source = (CheckBox) event.getSource();
|
||||||
|
HBox hbox = (HBox) source.getParent();
|
||||||
|
Label label = (Label) hbox.getChildren().get(1);
|
||||||
|
label.setStyle("-fx-strikethrough: true");
|
||||||
|
System.out.println(label.getStyle());
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void onTextFieldKeyPress(KeyEvent keyEvent) {
|
||||||
|
if (keyEvent.getCode().getCode() == 10) {
|
||||||
|
// 10 is the keycode for enter
|
||||||
|
addTodo();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderTodos() {}
|
||||||
|
}
|
11
openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java
Normal file
11
openjfx-todo/src/main/java/net/akpain/todo/TodoObject.java
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package net.akpain.todo;
|
||||||
|
|
||||||
|
public class TodoObject {
|
||||||
|
private String text;
|
||||||
|
private boolean completed;
|
||||||
|
|
||||||
|
public TodoObject(String text) {
|
||||||
|
this.completed = false;
|
||||||
|
this.text = text;
|
||||||
|
}
|
||||||
|
}
|
16
openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml
Normal file
16
openjfx-todo/src/main/resources/net/akpain/todo/primary.fxml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.layout.GridPane?>
|
||||||
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.TextField?>
|
||||||
|
|
||||||
|
<GridPane xmlns:fx="http://javafx.com/fxml" hgap="5" vgap="5" xmlns="http://javafx.com/javafx"
|
||||||
|
fx:controller="net.akpain.todo.Controller">
|
||||||
|
|
||||||
|
<TextField fx:id="todoTextField" GridPane.columnIndex="1" GridPane.rowIndex="1" GridPane.columnSpan="7" onKeyPressed="#onTextFieldKeyPress" />
|
||||||
|
<Button GridPane.columnIndex="8" GridPane.rowIndex="1" text="Add todo" onMouseClicked="#addTodo"/>
|
||||||
|
|
||||||
|
<VBox fx:id="todoDisplayBox" GridPane.columnIndex="1" GridPane.rowIndex="3" spacing="4" />
|
||||||
|
</GridPane>
|
Reference in a new issue