🏃‍♂️ 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ı
1
src/main
2
├──java/com/yemreak/myproject (ya da sadece myproject)
3
├── controllers
4
├──Screen1controller.java
5
├──Screen2controller.java
6
├── services
7
├──Service1.java
8
├── applications
9
├── SaveProducts.java
10
├──resources
11
├──views
12
├──screen1.fxml
13
├──screen2.fxml
14
├──css
15
├──style.css
16
├──images
17
├──img1.jpg
18
├──img2.jpg
Copied!
Ö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

1
public class Main extends Application {
2
3
private double xOffset;
4
private double yOffset;
5
6
@Override
7
public void start(Stage primaryStage) throws Exception{
8
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
9
10
primaryStage.setTitle("Hello World");
11
primaryStage.setScene(new Scene(root));
12
primaryStage.show();
13
14
root.setOnMousePressed(mouseEvent -> {
15
xOffset = mouseEvent.getSceneX();
16
yOffset = mouseEvent.getSceneY();
17
});
18
19
root.setOnMouseDragged(mouseEvent -> {
20
primaryStage.setX(mouseEvent.getScreenX() - xOffset);
21
primaryStage.setY(mouseEvent.getScreenY() - yOffset);
22
});
23
}
24
25
26
public static void main(String[] args) {
27
launch(args);
28
}
29
}
Copied!

Harici Bağlantılar

Last modified 1yr ago