🌃
GUI Tasarımı | JavaFX
JavaFX ile javada görsel arayüze sahip uygulama yapımı

📢 Önemli Bilgi

    JavaFX artık JDK 12'nın bir parçası değildir, buradan gerekli bilgilere erişebilirsin.
    Java SDK 8 ile depoy edebilmektesin
      Deploy etme hususunda bilgi almak için buraya bakabilirsin

👷‍♂️ IntelliJ için JavaFx Kurulumu

JavaFX ve JFhoenix Material UI'ı kurulumunu anlatan videom için buraya bakabilrisin 💁‍♂️
    İlk olarak IntelliJ'yi indirin
    Resmi sitesinden JavaFX SDK'sını indirin
    İndirdiğiniz arşivdeki çıkartın
    Arşivdeki javafx-sdk-12.0.1 dosyasını C:\Program Files\Java dizinine taşıyın
    GUI düzenleme aracı olan Scene Builder'ı indirin
    IntelliJ üzerinden File - Settings - Languages & Frameworks - JavaFx kısmına Scene Builder'ın yolunu yazın.
      Örn: C:\Program Files\SceneBuilder\SceneBuilder.exe
    IntelliJ üzerinden File - New - Project - JavaFX - Next - Finish ile projenizi oluşturun
    Son olarak File - Project Structure - Modules
    Açılan ekranda + - Library - Java
    Çıkan ekran ile C:\Program Files\Java\javafx-sdk-12.0.1\lib kütüphanesini ekleyin
    Run - Edit Configurations
    Çıkan ekranda VM Opitons alanına alttaki metni kopyalayın:
      --module-path "C:\Program Files\Java\javafx-sdk-12.0.1\lib" --add-modules=javafx.controls,javafx.fxml
    Artık .fxml uzantılı dosyalarda ekranın sol alt köşesinden Scene Builder'a tıklayarak GUI programlamaya başlayabilirsiniz ✨
Not sizin sürümünüz ve yolunuz farklı ise ona göre ayalayın <yol>\javafx-sdk-<version>\lib

🍱 Maven ile Modüler JavaFX Kurulumu

Anlatıcı video için buraya bakabilrisin

📃 pom.xml içeriği

Maven xml verilerini, pom.xml dosyasında geösterilen alana yapıştırın.
    TODO alanlarını düzenlemeyi unutmayın
1
<?xml version="1.0" encoding="UTF-8"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0"
3
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
<modelVersion>4.0.0</modelVersion>
6
7
<groupId>com.yemreak</groupId> <!-- TODO: Kodların bulunduğu ana package ismi-->
8
<artifactId>ytoolsfx</artifactId> <!-- TODO: Modül ismi -->
9
<version>1.0.0</version> <!-- TODO: Sürüm numarası -->
10
11
<!-- Buraya yapıştırılacak -->
12
13
</project>
Copied!
1
<properties>
2
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3
<maven.compiler.source>12</maven.compiler.source>
4
<maven.compiler.target>12</maven.compiler.target>
5
</properties>
6
<dependencies>
7
<dependency>
8
<groupId>org.openjfx</groupId>
9
<artifactId>javafx-controls</artifactId>
10
<version>12</version>
11
</dependency>
12
<dependency>
13
<groupId>org.openjfx</groupId>
14
<artifactId>javafx-fxml</artifactId>
15
<version>12</version>
16
</dependency>
17
</dependencies>
18
<build>
19
<plugins>
20
<plugin>
21
<groupId>org.apache.maven.plugins</groupId>
22
<artifactId>maven-compiler-plugin</artifactId>
23
<version>3.8.0</version>
24
<configuration>
25
<release>12</release>
26
<source>8</source>
27
<target>8</target>
28
</configuration>
29
</plugin>
30
<plugin>
31
<groupId>org.openjfx</groupId>
32
<artifactId>javafx-maven-plugin</artifactId>
33
<version>0.0.2</version>
34
<configuration>
35
<release>12</release>
36
<jlinkImageName>ytoolsfx</jlinkImageName> <!-- TODO: Modül ismi -->
37
<launcher>launcher</launcher>
38
<mainClass>ytoolsfx/com.yedhrab.applications.MainApp</mainClass> <!-- TODO: Main classının yolu -->
39
</configuration>
40
</plugin>
41
</plugins>
42
</build>
Copied!

🎈 Maven ile Başlangıç Yapılandırması

⇧ Shift + F10 ile projeyi çalıştırmanızı sağlar
    Edit Configuration + + + maven
    Command Line alanına javafx:run yazın
    Before launch: Activate Tool Windov alanınındaki + butonuna tıklayın
    Run maven goal'ı seçin
    javafx:compile yazıp kaydedin
    Project Structures - Libraries kısmında + butona basın
    Çıkan ekranda From Maven yazısına tıklayın ve org.openjfx:javafx-maven-plugin:0.0.2 yazıp indirin.

🧱 JavaFX Scene Builder

    View - Show Sample Controller Skeleton ile Controller'a yazılacak kodu görebiliriz
    Sol alttaki alandan Controller içerisinde
      Controller Class alanına <package>.Controller yazarak Controller class'ını görmesini sağlıyoruz
    Sol alttaki code alanındakiler Controller'a aktarılacaktır
    Her importta javafx.scene olması lazımdır
      Image vs..
    Sağ taraftaki code alanındaki fx:id kısmında ismi yazacak (Controller'dan erişmek için)

🔨 Scene Builder Yapılandırması

[JFoenix] framework'ü kullanıldığından Scene Builder'ın library'lerine dahil edilmesi lazımdır.
    Sol üst kısımda Library sekmesinin en sağındaki ⚙ tıklayın
    JAR/FXML Management - Add Library/FXML from file system linkine tıklayın
    İndirdiğiniz [JFoenix] dosyasının jar'ını bulup, seçin.
    Check All ve Built in ayarları ile dahil edin.
FXML dosyası ile Controller vs Resimlerin aynı package içerisinde olmaması durumunda Scene Builder öneri yapamaz 😢

💿 JavaFX RunTime Images

1
export PATH_TO_FX_MODS=path/to/javafx-jmods-12.0.1
2
$JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods/production --add-modules hellofx --output jre
3
jre/bin/java -m hellofx/org.openjfx.MainApp
Copied!

🐛 Hata Notları

📌 class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x24782c87) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics:

    Çıkan ekranda VM Opitons alanına alttaki metni kopyalayın:
      --module-path "C:\Program Files\Java\javafx-sdk-12.0.1\lib" --add-modules=javafx.controls,javafx.fxml

📍 Error: Java FX Packager: Can not build artifact - fx: deploy is not available in this JDK

    IntelliJ üzerinde java ile gelen fx:deploy özelliği kaldırılmıştır (java 11+)
    Bu yüzden buradan veya jpackage üzerinden kurulumlara bakabilirsin

📌 Error:Kotlin: The Kotlin standard library is not found in the module graph. Please ensure you have the 'requires kotlin.stdlib' clause in your module definition

Projeyi Build sekmesinden Rebuild Edin tekrar deneyin.

📍 ** has been compiled by a more recent version of Java Runtime(class file version 56.0), this version of Java Runtime only recognizes class file versions up to 52.0

    Jar dosyalarını Java 12 JVM ile çalıştırmamanızdan kaynaklanır
    Java 12 derleyicisi target 12, bytecode 56 değerlerine sahiptir
    Java 8 bytecode 52 değerine sahiptir
    Bir yerde kalmış olan Java 8 JVM'ine sahip olabilirsiniz
That's because you're not running the jars on a Java 12 JVM. You built them with a Java 12 compiler and targeted release 12. Java 12 is bytecode version 56. 52 is Java 8. You have an old Java 8 JVM somewhere and that's what you're running.
Either run with the Java 12 java or recompile using javac --release 8 ...
(And that's not a JNI error)
Kaynak

🔗 Faydalı Bağlantılar

Last modified 1yr ago