İlginizi Çekebilir
JavaFX Form
  1. Ana Sayfa
  2. Java Projeleri
  3. JavaFX İlk Projem

JavaFX İlk Projem

Bir şeyleri öğrenmek ve deneyim kazanabilmek elimizi biraz kirletmememiz gerekiyor. Bu yüzden JavaFX İlk Projem konu içerisinde bu yolda çıktığım serüveni, kazandığım deneyimleri, yaşadığım zorlukları ve öğrendiğim çeşitli bilgileri sizlerle paylaşmak istiyorum. JavaFX ile ilk projemi tanıtmadan önce sizleri konu içerisinde neler bekliyor, nasıl bir anlatım olacağı hakkında kısa bir bilgilendirme yapmak istiyorum. Eğer bu kısımlar ilginizi çekmezse direkt konu anlatımı bölümüne geçebilirsiniz.

Java Projelerin Karar Aşaması ve Proje İnşası

Java Projeler kategorisini oluşturmamdan ve ilk projemi paylaşmamdan itibaren yaklaşık 3 haftalık bir süreç geçti. Eğer Java Json ile Döviz Uygulaması Yapımı konusuna göz attıysanız bir ekip ve bu ekip ile çeşitli projeler yapma kararımızın olduğunu hatırlayabilirsiniz. Yine aynı ekip ile bu sefer ilaç bilgilerinin tutulacağı, çeşitli kayıtların gerçekleştirileceği bir uygulama yapma kararı aldık.🥳

Tabi, bu uygulama kararını aldıktan sonra verilerin işlenebilmesi, kullanılabilmesi ve kayıt altında tutulabilmesi için programımın temelini oluşturacak bir veri tabanı tercihinde bulunmam ve bilgisayarıma kurmam gerekiyordu. Bu konuda tercihimi Microsoft SQL Server tarafından yana kullandım. Vermiş olduğum karar kadar hızlı olmasa da programımın iskelet (form) yapısını göze daha hoş gelecek, kullanımından zevk alacağım ve Java’ya tekrar aşık olmamı 😍 sağlayacak bir karar alarak JavaFX yapısına giriş yapmaya karar verdim. 💪🏻

Gerekli temel işlemler için karar verildikten sonra arkadaşlarıma mahcup olmamak ve en önemlisi bazı şeyleri başarabileceğimi kendime kanıtlayabilmek için 25 Mart 2021 Tarihinden, projenin sunum tarihi olarak belirlediğimiz 5 Nisan 2021 tarihine kadar sıkı bir araştırma, proje inşası ve yazılacak uzun kod satırları macerama başladım. Bu maceramın devamını aşağıdaki başlıklarda inceleyebilirsiniz.👀

Unutmadan, JavaFX üzerinde yaptığım ilk projemin kod bloklarını daha detaylı incelemek isterseniz github hesabımdan proje dosyalarına ulaşım sağlayabilir ve sıkıntısız bir şekilde indirme işlemini gerçekleştirebilirsiniz.

JavaFX Kurulumu

JavaFX projesi oluşturabilmek için bazı gerekli ayarlamalar ve kurulumlar gerçekleştirmemiz lazım, JavaFX kurulumunda herhangi bir sıkıntı yaşamamanız için detaylı bir rehber içeriği oluşturdum. Bu rehber içeriği sayesinde JavaFX kurulumu hakkında detaylı bir bilgi sahibi olabileceksiniz. Bu içeriğe emrecelen.com.tr/javafx-kurulumu-nasil-yapilir/ bu adresi takip ederek ulaşabilirsiniz.

JavaFX Scene Builder Kullanımı

JavaFX kurulumunu gerçekleştirdikten sonra, form yapımızı oluşturabilmek için yardım alacağımız bir program olan Scene Builder indirmesini ve kurulum aşamalarını gerçekleştirmemiz gerekiyor. Konuyu fazla uzatmamak için Scene Builder indiriminin nasıl gerçekleştireceğini bu konu içerisinde anlatmadan direkt projemiz içerisine nasıl tanımlamamız gerektiğini anlatacağım.

Projelerimiz içerisinde JavaFX Scene Builder Kullanımını gerçekleştirebilmek için öncelikle CTRL + ALT + S tuş kombinasyonuna basmamız ve sonra aşağıdaki aşamaları gerçekleştirmemiz gerekmektedir. JavaFX scene builder kullanımı için gerçekleştirmemiz gereken aşamalar:

  • Önümüze çıkacak pencereden sol tarafta yer alan Languages & Frameworks kısmından JavaFX kısmını seçeceğiz.
  • Seçimi yaptıktan sonra hemen sağ tarafta doldurmamız gereken tek bir text box karşımıza çıkacak, bu kısımda Scene Builder indirmesini hangi dosya yolunda gerçekleştirdiysek ulaşıp, dosya içerisindeki Exe uzantısının seçimini gerçekleştiriyoruz.

👌🏻 Gördüğünüz gibi belki de şu ana kadar en hızlı ve zorlanmadan yapabildiğimiz tanımlama işlemini, JavaFX projemizde Scene Builder kullanımı için gerçekleştirmiş olabiliriz. Bu aşamadan sonra programımızın inşasına başlayabiliriz fakat görsel olarak programımızı daha göze hoş ve modern bir çizgi ile inşa etmek istersek daha sonra ayrı bir konuda özel olarak anlatımını gerçekleştireceğim JFoenix kurulumunu programlarınıza sizlerde tanımlayabilirsiniz.

Java JDBC Microsoft Sql Server Kurulumu

Projemizin temelini oluşturacak JavaFX ve Scene Builder kurulumunu gerçekleştirdikten sonra, asıl silahımız olacak ve veri işleme konusunda bize yardım edecek bir veri tabanı seçimi gerçekleştirmem gerekiyordu. 🕵🏻 Bu işlem için arayüzüne daha aşina olduğum Microsoft Sql Server seçimini gerçekleştirdim.

Kararımı verdikten sonra yapmam gereken şey, daha önce okul derslerim için bir kaç kez denediğim Projemin içerisine bu veri tabanının tanıtımını gerçekleştirme aşamasını hızlı bir şekilde gerçekleştirmekti. Java JDBC Microsoft Sql Server tanıtımını gerçekleştirmek için Microsoft’un resmi olarak buradan ulaşabileceğiniz internet sitesi üzerinde yayınlamış olduğu JDK dosyasını indirdikten sonra aşağıdaki aşamaları gerçekleştirmemiz gerekiyor.

  • Projemize bir kütüphane eklemek istediğimiz zaman CTRL + ALT + SHIFT + S tuş kombinasyonuna ya da ayarlar kısmında eklentiler penceresine ulaşım sağlayarak bir sonraki aşamaya geçelim.
  • Sayfaya ulaştıktan sonra, Java JDBC Microsoft Sql Server kurulumu için gerekli olan jar dosyasının sadece 11 nolu dosyasının kurulumunu gerçekleştirdim.
  • Projemde bağlantı sorunu yaşamamak için, Microsoft SQL Server Configuration Manager uygulamasını açarak sol tarafta yer alan SQL Server Network Configuration bölümün altında bulunan protokol kısmına erişim sağladım. Bu erişimi sağlama sebebimiz bağlantı esnasında bize sıkıntı yaşatması muhtemel TCP/IP bölümünün aktifliğinin kontrolünü sağlamak.

    Java JDBC Microsoft Sql Server
    Java Microsoft SQL Server Kontrolü

Eğer görselde gördüğünüz bu kısım sizde Disabled olarak seçili ise Enabled olarak çevirmeniz gerekiyor. Aksi takdirde proje dosyasını indirip, çalıştırmaya çalıştığınız zaman Java JDBC Microsoft Sql Server bağlantısı esnasında hata ile karşılaşmanız muhtemel bir hale gelecektir.

JavaFX İlk Projenin Kodlama Aşaması

JavaFX üzerinde ilk projem olduğu için kurulum aşamaları bu şekilde uzun ve karşılaştığım veri tabanı bağlantı hatalarını çözmek için harcadığım zaman, JavaFX kurulumu esnasında uygun Path ayarlarını yapamam gibi sorunlar yüzünden sancılı bir süreç olarak bir kaç günümü harcamam gerektiğini söyleyebilirim. Bu süreç geçtikten sonra bile sadece kurulumları gerçekleştirerek bir çok şey öğrendiğimi hissediyordum. 🤓

Artık yapmam gerekenler: tasarım, form inşası, kodların yazılması, veri tabanı oluşturma gibi beni heyecanlandıran işlerdi. Bu işleri gerçekleştirirken yazmış olduğum kodlardan bazılarını sizlerle paylaşırken, bazılarında sadece uyguladığım aşamaları anlatacağım. Hazırsanız projemizin iskeletini oluşturmaya başlayalım.

JavaFX İlk Projem İçin Veri Tabanı Oluşturma İşlemleri

SQL gerçekten dipsiz bir kuyu gibi, öğrenmem gereken ve öğrenirken de uygulamam gereken bir kavram olduğunu bu proje sonunda iyice kavradığım bir gerçeklik. Bu gerçekliğin farkında olmama rağmen henüz yeni bir atılım sergilediğim için bu konuda basit, beni yormayacak ve JavaFX ilk projem ile birlikte veri tabanı ilişkisini anlayabilmek için basit bir kaç kod satırı ile tablo oluşturup, oluşturmuş olduğum tablo satırlarında gerekli yerlerde ilişkiler kurduğumu görebilirsiniz.

------> DEMO CODE <------
CREATE DATABASE pharmacy	

CREATE TABLE account(
accountNo INT PRIMARY KEY IDENTITY(1,1),
pname VARCHAR(30) NOT NULL,
psurname VARCHAR (30) NOT NULL,
pbirthDay DATE NOT NULL,
username VARCHAR (30) NOT NULL,
userpassword VARCHAR (50) NOT NULL,
);

CREATE TABLE medicine(
medicineNo VARCHAR(20) PRIMARY KEY,
medicineName VARCHAR(30) NOT NULL,
producerName VARCHAR(30) NOT NULL,
medicineType VARCHAR(30) NOT NULL,
medicineMoney INT NOT NULL, -- INT OR MONEY
medicineAbout VARCHAR(300) NOT NULL,
);

CREATE TABLE producer(
producerName VARCHAR(30) PRIMARY KEY,
producerNo VARCHAR(20) NOT NULL,
);

ALTER TABLE medicine
ADD FOREIGN KEY (producerName) REFERENCES producer(producerName);

 

Tabi, bu kadar acemice yazılmış bir kod parçacığının üzerine giderek, ilerleyen zamanlarda gerçekleştireceğim projeler ile birlikte daha iyiye, daha güvenli bir hale getirilmiş veri tabanları oluşturduğumu görebileceğinizin sözünü sizlere şimdiden verebilirim. 👊🏻

Java Veri Tabanı Bağlantısı

JavaFX ilk projem üzerinde kullanmak için basit bir şekilde de olsa oluşturmuş olduğumuz veri tabanı üzerinde işlemler gerçekleştirmek, sorgulamalar ve bilgileri kayıt edebilmek için java veri tabanı bağlantısını gerçekleştirmem gerekiyor. Java veri tabanı bağlantısı, JDBC kullanımı ile gerekli tanımlamalar, sınıf oluşturmaları ve bir kaç satırlık sınıf tanımlamaları ile şekil alınabilecek bir kavram olduğunu öğrendikten sonra projemiz içerisinde veri tabanı bağlantısını gerçekleştirmek için gerekli kodları yazmaya başladım.

Bu işlemi gerçekleştirebilmek için öncelikle database isminde bir klasör oluşturarak bu klasörün içerisine veri tabanı bilgilerimin yer alacağı DatabaseConfiguration isminde bir sınıf oluşturarak bu sınıf içerisine, bağlantı işlemi için lazım olacak çeşitli tanımlamaları gerçekleştirdim. Tanımlamaları gerçekleştirdikten sonra sınıfımın son hali aşağıdaki gibi şekillendi.

package database;

public class DatabaseConfiguration {

    ///-------> Variable  <-------\\\
    private final String dbURL = "jdbc:sqlserver://localhost:1433;databaseName=pharmacy";
    private final String dbUserName = "root";
    private final String dbUserPass = "admin";

    ///-------> Getter Method <-------\\\
    public String getDbUserName() {
        return dbUserName;
    }
    public String getDbUserPass() {
        return dbUserPass;
    }
    public String getDbURL() {
        return dbURL;
    }
}

Yukarıdaki gibi tanımlamamı gerçekleştirdikten sonra, veri tabanı bağlantısı için lazım olacak ve gerekli sorgulamaları gerçekleştireceğim değerleri unutmamak ve bu değerleri kullanmak için IDatabase isminde bir interface tanımlaması gerçekleştirdim. Eğer interface hakkında bir fikriniz yoksa daha önce paylaştığım Java Interface Nedir isimli yazıma emrecelen.com.tr/java-interface-nedir/ bu adresten ulaşım sağlayabilirsiniz.

package database;

public interface IDatabase {
    // Database İşlemlerimiz:
    void login();
    void close();
    void addUser(String name, String surName, String birthDay, String userName, String userPass);
    int getUser(String userName, String passWord);
}

Bir veri tabanı bağlantısında olması gereken: bağlantı, bağlantıyı kapatma gibi işlemlerin yanında proje içerisindeki giriş sisteminin kontrolü için kullanıcı bilgilerinin getirileceği ve veri tabanı üzerine kullanıcı eklenmesinin yapılacağı metot tanımlamalarını gerçekleştirdim. Bu tanımlamaları yaptıktan sonra bu tanımladığım Interface değerlerinin içerisini doldurmak için DatabaseManager isminde bir sınıf oluşturarak bağlantı işlemi için, veri ekleme ve SQL sorgusu gerçekleştirmek için gerekli tanımlamaları ve metotların içerisini doldurarak, ekstra metot tanımlamalarını yaptım. Bu işlemleri gerçekleştirdikten sonra JavaFX ilk projem için dolaşım sistemi görevinde olacak bu tanımlanan metotlar ve DatabaseManager sınıfının son halini Github hesabımda paylaştığım proje dosyalarından görebilirsiniz.

Java veri tabanı bağlantısı olarak yukarıda bahsettiğimiz terimin karşılığı olarak projem içerisinde üç ana işlem sonucunda bağlantı işlemlerini ve sql sorgularını istediğim şekilde gerçekleştirebileceğim bir yapı haline gelmiş oldu. Bu aşamadan sonra projenin form yapısının inşası ve bu inşa sonucunda kod bloklarının oluşması kaldı, hazırsanız form yapısının oluşmasında kullanılan aşamalara geçebiliriz.

JavaFX Form Oluşturma İşlemi

JavaFX Form oluştururken aklımda belirli renkler ve bu renkleri kullanarak bir kurumsal çizgi oluşturma kararı vardı. Bu karar sonucunda üç temel renk kodu ile JavaFX form oluşturması sürecine başladım. Öncelikle formlar arasında geçişte absürt farklılıklar oluşmaması, tek bir çizgi üzerinde gidilerek formun kullanılabilirlik seviyesini arttırmak için temel bir iskelet yapısı oturtarak JavaFX form oluşturma serüvenimde renk seçiminden sonra ikinci büyük adımımı attım.

Bu gerekli kararları verdikten ve ilk formumu oluşturduktan sonra, aklıma form yapılarının arasındaki geçişi sağlayabilmem için bir araştırma yapmak geldi. Bu araştırma sonucunda normal bir swing form yapısındaki geçişin kolaylığı gibi basit bir kaç satırlık tanımlama yerine biraz daha uzun bir kod parçası yazmam gerektiğini öğrendim. Araştırmam sonucunda edindiğim bilgiler ile FXML dosyalarımın arasında geçişi sağlayacak FxmlLoader isminde bir sınıf tanımladıktan sonra içerisine getPage isminde bir metot tanımlaması gerçekleştirdim. Bu işlemlerden sonra sınıfımın son hali aşağıdaki hale geldi.

package FXMLPage;

import javafx.fxml.FXMLLoader;
import javafx.scene.layout.Pane;
import main.Main;

import java.io.FileNotFoundException;
import java.net.URL;

public class FxmlLoader {
    private Pane view;

    public Pane getPage (String fileName){
        try{

            URL fileURL = Main.class.getResource("/FXMLPage/"+fileName+".fxml");
            if(fileURL==null){
                throw new FileNotFoundException("FXML Dosyası Bulunamadı."); // Fxml file can't  be found.
            }
            view =  new FXMLLoader().load(fileURL);
        }
        catch (Exception e){
            System.out.println("ERR!\nAradığınız "+fileName+" dosyası FXMLPage paketinde bulunamadı."); //NO page "+ fileName +" please check FXMLPage.
        }
        return view;
    }
}

Form yapısındaki geçişi oluşturacak temel sınıfımı tanımladıktan sonra, formuma çeşitli özellikler katacak ve form içerisinde bazı alanları kaldırmama yardımcı olması için GetFormManager isminde bir sınıf tanımlaması yaparak, yukarıda yazmış olduğum kod satırına ekstra olarak bazı işlem atamalarını gerçekleştirdim. Bu işlemden sonra yazmış olduğum ve formlar arasında geçişi kolaylıkla sağlayacağım bir metot oluşturmayı başarmıştım.

package main;

import FXMLPage.FxmlLoader;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class GetFormManager {
    private double xcord;
    private double ycord;
    public void getForm(String fileName){
        FxmlLoader object = new FxmlLoader();
        Pane view = object.getPage(fileName);
        Stage stage = new Stage();
        stage.initStyle(StageStyle.UNDECORATED); // --> Üst Kapatma barını çıkartıyor
        stage.setScene(new Scene(view));
        view.setOnMousePressed(event -> {
            xcord = event.getSceneX();
            ycord = event.getSceneY();
        });
        view.setOnMouseDragged(e ->{
            stage.setY(e.getScreenY()-ycord);
            stage.setX(e.getScreenX()-xcord);
        });
        stage.show();
}

JavaFX Form yapıları arasındaki geçiş işlemini de sorunsuz bir şekilde sağladıktan sonra form yapımın içerisine bir farklılık ve görsellik katması için basit bir css dosyası oluşturarak form yapımın tasarımsal olarak bazı özellik tanımlamaları gerçekleştirdim. Bu tanımlamalardan sonra formumum içerisinde kullanıcının giriş yapması ve kayıt oluşturması için birbirine uyumlu, basit ve anlaşılabilir açıklamalar ekleyerek iki adet form oluşturdum. Oluşturmuş olduğum form tasarımlarına aşağıdan bakabilirsiniz:

JavaFX İlk Projem
JavaFX İlk Projem

Tabi, JavaFX ilk projem  programını çalıştırdığımız zaman, form üzerindeki üst bar kaldırılarak daha minimal bir hale bürünmüş olarak form özelliğimiz karşımıza geliyor. Yazıyı fazla uzatmamak için amatör bir şekilde hazırlamış olduğum videoyu aşağıdan izleyebilirsiniz.

Düzenli bir şekilde devam etmeyi planladığımız Java Projeleri konusunda arayı fazla açmadan 2. uygulamamızı da geliştirmiş olduk. Eğer sizde bu ekibin bir parçası olmak ya da projeler hakkında fikrinizi, aklınıza takılan bir soruyu benimle aşağıda yer alan yorum yap kısmında iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap