🏃‍♂️Hızlı Notlar | JavaFX

JavaFX 12 için hızlı notlar

🧱 Proje Dizin Yapısı

JavaFX için önerilen dizin yapısı aşağıdaki gibidir. (kaynak)

  • Çalışmaları gruplandırmak için com/yemreak/myproject yapısı kullanılmakta

    • Maven veya gradle yapısı olarak da geçmektedir

  • controllers, FXML dosyalarını kontrol eden kodlar

  • services, Harici hizmetler (veya tüm hizmetler)

    • Eğer çok fazla hizmet varsa, yerel hizmetleri farklı dizine alabilirsin

  • utility, Dahili hizmetler

  • resources, Tüm kod dışı kaynaklar (images, css, html vs.)

  • views, FXML tasarımları

src/main
  ├──java/com/yemreak/myproject (ya da sadece myproject)
     ├── controllers
        ├──Screen1controller.java
        ├──Screen2controller.java
     ├── services
        ├──Service1.java
     ├── applications
        ├── SaveProducts.java
  ├──resources
     ├──views
        ├──screen1.fxml
        ├──screen2.fxml
     ├──css
        ├──style.css
     ├──images
        ├──img1.jpg
        ├──img2.jpg

Örnek olacak proje için buraya bakabilirsin

👷‍♂️ Dosyaları Yapılandırma

Dizinleri IDE üzerinden yapılandırak daha verimli çalışabilirsin.

  • Project Structure - Project Settings - Modules

  • Source sekmesinden src/res dizinini Resources olarak tanıt

  • out, lib ve res dosyalarını Excluded olarak tanıt

Kaynak

💨 Hızlı Notlar

  • İlk önce Controller clasına ekle sonra Scene Builder tarafında fx:id'ye eşle

  • drive.png okunmuyor ama google_drive.png okunuyor

    • Refactor ile ismi yenilenirse de düzeliyor

    • Resimlerin herbiri src dizinininin altında olmalı

  • Üst üste tasarımlar için tasarım yapacağın paneli Hierarchy kısmından en alta alırsan, diğerlerinin üstüne gelir ve karışmaz

  • Ya da visible değerini false yaparsın

  • En alta alınan program çalıştığında ilk görülendir

📦 JPackage ile Çıkarma

  • İlk olarak buradan JPackage'ı indirmen lazım.

MSPaint adlı yazılım JPackage ile çıkarılmış (?)

Kod Notları

Listeners (Eylem Yönetimi)

Ekranı Taşıma İşlemi

public class Main extends Application {

    private double xOffset;
    private double yOffset;

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();

        root.setOnMousePressed(mouseEvent -> {
            xOffset = mouseEvent.getSceneX();
            yOffset = mouseEvent.getSceneY();
        });

        root.setOnMouseDragged(mouseEvent -> {
            primaryStage.setX(mouseEvent.getScreenX() - xOffset);
            primaryStage.setY(mouseEvent.getScreenY() - yOffset);
        });
    }


    public static void main(String[] args) {
        launch(args);
    }
}

Harici Bağlantılar

Last updated

© 2024 ~ Yunus Emre Ak ~ yEmreAk