👨‍💻 Kod Notları | JavaFX
JavaFx snippets ve kod notları

🎨 Kod Tarafında CSS Değiştirme

1
buttonDownload.setStyle("-fx-background-image: url('/images/verified.png')");
Copied!

🚧 Thread ile Kodlama

JavaFX'de oluşturulan Thread, FX'in threadına uyumsuz olarak ilerleyebilmekte, bu durumda Not on FX application thread; currentThread = JavaFX Application Thread error? hatası gelemektedir.
    FX (arayüzden) bağımsız Thread'lerdee sorun oluşmaz.
    Arayüzü bağımlı Thread'lerde Platform.runAfter{() -> {}} yapısı kullanılır
    Thread'i platformdan sonra başlat anlamına gelmektedir
1
new Thread(() -> {
2
Image resim = uzunSürenBirİşlem();
3
imageView.setImage(resim); // Bu udurmda thread ile FX yapısı kesişir ve hata verir
4
}).start();
5
6
new Thread(() -> {
7
Image resim = uzunSürenBirİşlem();
8
Platform.runAfter(() -> imageView.setImage(resim)); // Yapısı ile FX hazır olduktan sonra işlem yapılır
9
}).start();
Copied!

✨ CSS ile Stil Oluşturma

    Buton gibi alt öğrelere .buton css class'ı ile özellik tanımlayabilirsin
    Her eleman içinde bulunduğu panelin css özelliğini taşır

🧱 FXML'de Kod Yapısı

1
<TextField prefWidth="50" text="${speedSlider.value}"/> <!-- Inline code -->
2
<Slider fx:id="speedSlider" orientation="HORIZONTAL" prefWidth="300"
3
min="60" max="100000" blockIncrement="100"/>
Copied!

🍢 Slider Listener (Kaydırmalı çubuğun değişikliğine göre tepki verme)

Silder objesinden herhangi bir özelliği (...Property) alıp ona uygun listener ekleyebiliriz.
1
// Listener örneği
2
sliderQuality.valueProperty().addListener((observableValue, number, t1) -> {
3
updateFileSize();
4
});
Copied!

🔳 Çerçeveleri Kaldırma

1
primaryStage.initStyle(StageStyle.TRANSPARENT);
Copied!

👁‍🗨 Arkaplanı Transparant Yapma

    İlk olarak .fxml dosyasındaki gerekli objeye style="-fx-background-color: transparent ;" özelliği ekleyin
    Ardından kod tarafında alttaki düzeltmeyi yapın
1
primaryStage.setScene(new Scene(root));
2
primaryStage.getScene().setFill(Color.TRANSPARENT);
Copied!

📋 Clipboard (Pano) İşlemleri

1
private void putClipboard(String clipboardString) {
2
StringSelection stringSelection = new StringSelection(clipboardString);
3
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
4
clipboard.setContents(stringSelection, null);
5
}
6
7
String getClipboard() throws IOException, UnsupportedFlavorException {
8
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
9
return (String) clipboard.getData(DataFlavor.stringFlavor);
10
}
Copied!

🎴 ImageView Resmi Değiştirme

Bu işlem için resource dizini IntelliJ'de işaretlemeniz gerekmektedir.
1
import javafx.scene.image.Image;
2
3
// load an image in background, displaying a placeholder while it's loading
4
// (assuming there's an ImageView node somewhere displaying this image)
5
// The image is located in default package of the classpath
6
Image image1 = new Image("/flower.png", true);
7
8
// load an image and resize it to 100x150 without preserving its original
9
// aspect ratio
10
// The image is located in my.res package of the classpath
11
Image image2 = new Image("my/res/flower.png", 100, 150, false, false);
12
13
// load an image and resize it to width of 100 while preserving its
14
// original aspect ratio, using faster filtering method
15
// The image is downloaded from the supplied URL through http protocol
16
Image image3 = new Image("http://sample.com/res/flower.png", 100, 0, false, false);
17
18
// load an image and resize it only in one dimension, to the height of 100 and
19
// the original width, without preserving original aspect ratio
20
// The image is located in the current working directory
21
Image image4 = new Image("file:flower.png", 0, 100, false, false);
Copied!
Oracle'ın resmi sitesinden alınmıştır.

📂 Dosya Sürükle Bırak İşlemleri

1
@FXML
2
private ImageView imageView;
3
4
@FXML
5
void handleDragOver(DragEvent event) {
6
if (event.getDragboard().hasFiles()) {
7
event.acceptTransferModes(TransferMode.ANY);
8
}
9
}
10
11
@FXML
12
void handleDragDropped(DragEvent event) throws FileNotFoundException {
13
List<File> files = event.getDragboard().getFiles();
14
Image img = new Image(new FileInputStream(files.get(0)));
15
imageView.setImage(img);
16
}
Copied!
Last modified 1yr ago