Links
Comment on page

🏃‍♂️ 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
jetbrains_project_structures
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

2023 © Yunus Emre AK