0

JAVAFX Binding Properties

Merhaba arkadaşlalar nedensen Türkçe kaynaklarda sorup ama cevabını bulumadığım bir konudan bahsetmek istiyorum ben bulamadım bari başka arayan olursa onlar bulsun diye yazıyorum.   Javafx deki property binding diye bir durum var. Nedir bu ?  Bu binding olayı iki tane farklı property ‘nin birbiri ile senkron olarak çalışmasını sağlıyor.  biraz daha açalım yani birisinin değeri değişince otomatik olarak diğeri de güncelleniyor. Şöyle düşünün sizin bir textField ‘iniz var ve bir tane de “Label” iniz var textfield içinde yazdıklarınız anlık olarak label üzerinde güncelleniyor.   Şimdi olay bir örnek ile taçlandıralım ta ne dediğim anlaşılsın .

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import javax.xml.soap.Text;

public class Main extends Application {
    TextField txtCharacter;
    TextField txtActor;
    @Override public void start(Stage primaryStage)
    {
        // Create the Character label
        Label lblCharacter = new Label("Character's Name:");
        lblCharacter.setMinWidth(100);
        lblCharacter.setAlignment(Pos.BOTTOM_RIGHT);
        // Create the Character text field
        txtCharacter = new TextField();
        txtCharacter.setMinWidth(200);
        txtCharacter.setMaxWidth(200);
        txtCharacter.setPromptText("Enter the name of the character here.");
        // Create the Actor label
        Label lblActor = new Label("Actor's Name:");
        lblActor.setMinWidth(100);
        lblActor.setAlignment(Pos.BOTTOM_RIGHT);
        // Create the Actor text field
        txtActor = new TextField();
        txtActor.setMinWidth(200);
        txtActor.setMaxWidth(200);
        txtActor.setPromptText("Enter the name of the actor here.");
        // Create the Role labels
        Label lblRole1 = new Label("The role of ");
        Label lblRole2 = new Label();
        Label lblRole3 = new Label(" will be played by ");
        Label lblRole4 = new Label();
        // Create the Character pane
        HBox paneCharacter = new HBox(20, lblCharacter, txtCharacter);
        paneCharacter.setPadding(new Insets(10));
        // Create the Actor pane
        HBox paneActor = new HBox(20, lblActor, txtActor);
        paneActor.setPadding(new Insets(10));
        // Create the Role pane
        HBox paneRole = new HBox(lblRole1, lblRole2, lblRole3, lblRole4);
        paneRole.setPadding(new Insets(10));

        // Add the Character and Actor panes to a VBox
        VBox pane = new VBox(10, paneCharacter, paneActor, paneRole);
        // Create the bindings
        lblRole2.textProperty().bind(txtCharacter.textProperty());
        lblRole4.textProperty().bind(txtActor.textProperty());
        // Set the stage
        Scene scene = new Scene(pane);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Role Player");
        primaryStage.show();

    }

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

 böyle bir ekran çıktısı karşınıza gelecek . 

     lblRole2.textProperty().bind(txtCharacter.textProperty());
        lblRole4.textProperty().bind(txtActor.textProperty());

buradaki sırlı yer burası lblRole2 label i “Kötü Adam” yazan kısım lblRole4 ise Remzi Kaya yazan kısım . ben bu iki label’e  txtCharacter in textproperty() sini ve txtActor ‘ün textproperty() sini bind ediyorum. O artık otomatik olarak textfieldlere girilen değerleri label’lere güncelliyor. Haydi Kolay gelsin …

Kaynak olarak Javafx for Dummies adlı kitap kullanıldı. 

admin

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir