JavaFX ile proje olusturmak ve calistirmak

javafx
  • Turgay Can
  • Tarih

    31 Dec, 2012
  • Yorum

    0
  • Görüntüleme

    2701
  • İndirme

    0

JavaFX ile proje olusturmak ve calistirmak

Merhaba,
2012'nin son gününde yine bir FX'li gün :)

FX SDK'sı artık JDK içinde default olarak gelmektedir. O yüzden ekstra bir yükleme yapmaya gerek yok. Sadece arayüz geliştirmek için FX Scene Builder 1.1. versiyonunu indirmenizde faydar vardı. Uygulamayı NetBeans IDE 7.2 versiyonu üzerinde geliştiriyorum.

Hemen işe koyulup bir FX + FXML projesi oluşturup ufak bir kaç detay ile örnek üzerinde açıklayalım. Sırasi ile önce IDE'miz üzerindeki soldaki menü'den Project kısmını seçiyoruz, sonra boş alanda sağ tuş yapıp, açılan pencereden New Project.. sekmesini seçiyoruz. Açılan menüden sırasıyla aşağıdaki resimlerdende takip edebilirsiniz. Categories kısmından JavaFX 'i , Projects kısmında JavaFX FXML Application sekmenisi seçip, next butonuna basınız. Yeni bir pencere gelecektir burada Projenizin adı, bulunduğu adresi ve en önemlisi çalışacağı platform bulunmaktadır. JavaFX Platform olarak, JDK değil de JavaFX Platform'un seçili olduğundan emin olunuz.


Daha sonra ekranlarımızı oluşturmak için FX Scene Builder aracımızı açıyoruz. Araç sürükle bırak mantığı ile çalışıyor. Nesnelerimizi bulunan AnchorPane üzerine sürükleyip bırakmak yeterli oluyor. Daha sonra görsellik ayarlarınızı sağdaki Layout ve properties kısmından ayarlayabilirsiniz. Burada en önemli kısımlardan birisi ise yarattığımız bu arayüzü(view) bir Controller sınıfı ile nasıl ilişkilendireceğimizdir. Bunu Scene Builder üzerinden AnchorPane'ı senip, sağdaki menü'den Code yazan butona basıp, menüyü açınız, açılan menüden Controller Class kısmına ilişkilendireceğiniz Controller sınıfını package.class hiyerarşisi ile veriniz.

Kodlapaylas.com JavaFx
Kodlapaylas.com JavaFx

Scene Builder ile oluşturduğumuz FXML dosyamızı uygulamanın kaynak kodları içinde uygun gördüğünüz bir package altına yerleştiriniz fakat unutmadan belirteyim FXML ile ilişkilendirdiğiniz Controller sınıfınızın adresine(path)' dikkat ediniz.

Bütün bu işlemleri aslında direkt olarak uygulamayı yarattıktan sonra daha basit bir şekildede yapabilirsiniz fakat öncelikle bağımsız olarak oluşturulması ve daha sonra ilişkilendirilmesi kısmını daha iyi anlatabilmek için böyle bir yöntem izledim.

Uygulamamızın kaynak kodları içindeki package'imizin üzerinde sağ tuş yapıp açılan menüden JavaFX->Exmpty FXML 'i seçip, Next butonuna basınız.Gelen yeni ekrandan FXML adınızı veriniz, adres ve package'inizi belirleyip, Next butonuna basınız. Eğer Controller sınıfınız yok ise Use Java Controller 'ı seçiniz, hemen altındaki alan aktifleşecektir. Default olarak FXML için verdiğiniz ad 'a Controller ismini ekliyor ve FXML ve bağlı Controller sınıfını entegre şekilde oluşturuyor. Eğer zaten bir Controller sınıfınız var ise hemen altındaki Use Existing seçeneğini seçiniz ve varolan Controller sınıfını Browse.. butonuna basarak seçiniz. Sonra Next, diyip isteğe bağlı css ekleyebilirsiniz ve nihayetinde Finish butonu ile işlem sürkülasyonunu bitirmiş oluyoruz :)

Resimlerdeki ilk kısıma bağlı kalarak bir örnek uygulama kaynak kodlarını açıklamaları ile birlikte paylaşayım.
Scene Builder ile yarattığım FXML'imin arka planında oto üretilen(generate) eden kod bloğu;

MyView.fxml

  <?xml version="1.0" encoding="UTF-8"?>

    <?import java.lang.*?>
    <?import java.util.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.paint.*?>

    <AnchorPane id="AnchorPane" maxHeight="-Infinity" 
maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
                prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml"
 fx:controller="myfirstjavafxapp.MyViewController">
        <children>
            <Button fx:id="btnSec" layoutX="234.0" onAction="#handleButtonAction" layoutY="100.0"
 mnemonicParsing="false" text="Seç" />
            <Label fx:id="lblMesaj" layoutX="207.0" layoutY="186.0" prefWidth="125.0" text="" />
        </children>
    </AnchorPane>

Controller sınıfı ile ilgili fxml etiketimiz : fx:controller="myfirstjavafxapp.MyViewController"
Butonumuzun onAction metodu ile Controller sınıfında tetikleyeceği metodun adı ve arayüzde tanımı : onAction="#handleButtonAction"

MyViewController.java

package myfirstjavafxapp;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;

/**
 *
 * @author turgay.can
 */
public class MyViewController implements Initializable{

    @FXML
    private Label lblMesaj;
    @FXML
    private Button btnSec;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        lblMesaj.setText("Seçildi!");
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }

}

Yukaridaki kod'un örnek bir çıktısı;

Kodlapaylas.com JavaFx

0 Yorum..

Yorum yapmak için "Giriş yapın" yada "Misafir üye" olarak yorum yapabilirsiniz.

Yorum Yap