Pages

Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Saturday, September 07, 2024

Menggunakan JavaFX dalam IDE Eclipse

* Kiriman ini telah dikemaskini pada 8 Sept 2024.

NOTA: Bagi melaksanakan penerangan di bawah, diandaikan Java JDK dan IDE Eclipse sudah dipasang. Jika belum, pemasangnya boleh dimuat turun dari laman web Eclipse : 

Logo IDE Eclipse (sumber: www.eclipse.org)

JavaFX ialah pustaka antara muka pengguna (GUI, atau graphical user interface) untuk aplikasi yang dibina menggunakan bahasa Java. JavaFX membolehkan aplikasi Java dibina dengan GUI yang sesuai untuk aplikasi terkini yang amnya memerlukan fleksibiliti merentas peranti paparan yang bersifat pelbagai ragam atau bentuk.

Logo JavaFX (sumber: Internet)


Membina GUI dengan JavaFX memerlukan pustaka JavaFX. Pustaka ini dipasang berasingan daripada kit pembangunan Java (JDK, atau Java Development Kit) kerana JavaFX tidak digabungkan sebagai pustaka standard JDK. Hal ini berbeza jika dibandingkan dengan pustaka GUI Java lain iaitu Swing dan AWT yang mana digabungkan dan dipasang bersama JDK.

IDE Eclipse boleh menyokong penggunaan pustaka JavaFX tetapi memerlukan konfigurasi tambahan selepas pustaka JavaFX dipasang. Jika tidak dibuat, Eclipse tidak dapat menggabungkan proses pembinaan atur cara Java bersama JavaFX. Maka penggunaan kod JavaFX dalam atur cara akan menyebabkan ralat sintaks.

Pemasangan JavaFX memerlukan EMPAT langkah am berikut:
  1. Memasang plugin e(fx) Eclipse 
    • e(fx) ialah plugin yang membolehkan projek berkaitan JavaFX dibina / diurus oleh Eclipse.
  2. Memuat turun dan memasang pustaka JavaFX 
    • JavaFX ialah pustaka yang diperlukan untuk membina aplikasi Java denga GUI JavaFX.
  3. Membina komponen pustaka JDK dengan JavaFX dalam Eclipse
    • komponen ini diperlukan oleh pengkompil JDK semasa pembinaan / pengkompilan Java di dalam Eclipse.
  4. Membina komponen JRE (mesin maya) dengan JavaFX dalam Eclipse
    • komponen ini diperlukan untuk melaksanakan aplikasi Java dengan JavaFX dari dalam Eclipse (pengujian).

Berikut adalah langkah-langkah pemasangan JavaFX untuk digunakan dalam IDE Eclipse. 

Langkah 1: Memasang plugin e(fx) Eclipse

  1. Buka Eclipse dan pilih 'Help' kemudian 'Install New Software' daripada bar menu.
  2. Tekan bebutang 'Add'.
  3. Isikan nama yang sesuai untuk mengambarkan sumber pemasangan plugin (cth: 'efx nightly build') pada kotak input 'Name'.
  4. Isikan URL https://download.eclipse.org/efxclipse/updates-nightly/site/ pada kotak input 'Location'.
  5. Tekan bebutang 'Add'
  6. Senarai pustaka akan dipaparkan. Pilih semua item 'e(fx) ...' yang disenaraikan dan tekan bebutang 'Finish'.
  7. Pustaka e(fx) akan dimuat turun dan dipasang. Pemasangan ini mungkin memerlukan masa dan tunggu saja sehingga selesai (lihat status pemasangan di penjuru kanan, bawah).

Langkah 2: Memuat turun / memasang pustaka JavaFX

  1. Muat turun pemasang JavaFX (*.zip, pakej SDK) daripada laman web JavaFX cth: https://jdk.java.net/javafx22/ (ketika artikel ini ditulis versi 22 adalah yang terkini)
  2. Ekstrak fail pustaka ke dalam direktori yang akan digunakan untuk pembangunan (cth: c:\users\USER\javafx-sdk\). 
Apabila diekstrak, direktori c:\users\USER\javafx-sdk\javafx-sdk-22.0.2 akan diwujudkan (bergantung kepada pustaka yang dimuat turun) dan turut mengandungi subdirektori 'lib'. Subdirektori ini mengandungi fail-fail pustaka yang diperlukan untuk pembinaan dan pelaksanaan aplikasi JavaFX.


Langkah 3 : Membina komponen pustaka JDK dengan JavaFX dalam Eclipse

  1. Buka IDE Eclipse.
  2. Pilih 'Window' kemudian 'Preferences' di bar menu.
  3. Dalam tetingkap yang terpapar, lihat senarai di sebelah kiri. Pilih 'Java' kemudian 'Build Path' dan seterusnya 'User Libraries'.
  4. Tekan bebutang 'New' dan tuliskan nama untuk pustaka baharu (cth: 'Pustaka JavaFx 22'). Tekan bebutang 'OK'.
  5. Pilih nama pustaka baharu daripada senarai yang dipaparkan ('Pustaka JavaFx 22'). Kemudian tekan bebutang 'Add External JARs...'.
  6. Cari dan dapatkan semula direktori yang mengandungi pustaka JavaFX yang dipasang dalam Langkah 2 (c:\users\USER\javafx-sdk\javafx-sdk-22.0.2). Buka subdirektori 'lib'.
  7. Pilih semua fail dengan sambungan *.jar. Kemudian tekan bebutang 'Open'.
  8. Tekan bebutang 'Apply and Close'. Pustaka JavaFX yang diperlukan sepatutnya sudah terbina dengan nama 'Pustaka JavaFx 22'.
NOTA: Penetapan ini bersifat global dan akan digunakan bagi sebarang projek yang dibina dalam ruang kerja Eclipse yang sama. Jika anda ingin menggunakan pustaka JDK tanpa JavaFX, ulang langkah 3.1 hingga 3.3, dan pilih pustaka JDK asal.


Langkah 4: Membina komponen JRE (mesin maya) dengan JavaFX dalam Eclipse

  1. Pilih 'Window' kemudian 'Preferences' daripada bar menu.
  2. Dalam tetingkap yang terpapar, lihat senarai di sebelah kiri. pilih 'Java' kemudian 'Installed JREs'
  3. Pilih nama pustaka JRE yang dipaparkan. Pustaka sedia ada ini akan dijadikan salinan untuk JRE dengan JavaFX. (NOTA: Sepatutnya terdapat sekurang-kurangnya satu JRE asas disenaraikan, yang dipasang bersama pakej Eclipse dengan JDK)
  4. Tekan bebutang 'Duplicate'.
  5. Dalam tetingkap yang terpapar, tukarkan kandungan kotak input 'VM Name' kepada nama yang sesuai untuk menamakan JRE VM baharu. Contoh JRE JavaFx.
  6. Di dalam kotak input 'Default VM Arguments' tuliskan teks berikut:
    --module-path c:\users\USER\javafx-sdk\javafx-sdk-22.0.2\lib --add-modules javafx.controls,javafx.fxml 
    (NOTA: Teks merah c:\users\USER\javafx-sdk\javafx-sdk-22.0.2 ialah direktori di mana JavaFX dipasang semasa Langkah 2. Pastikan ia sama dengan lokasi JavaFX yang anda pasang. Jika tidak ralat akan berlaku semasa penggunaan JRE)
  7. Tekan bebutang 'Add External JARs'
  8. Pilih semua fail dengan sambungan *.jar. Kemudian tekan bebutang 'Open'.
  9. Tekan bebutang 'Finish'. Mesin maya JRE dengan JavaFX yang diperlukan sepatutnya sudah terbina dengan nama 'JRE JavaFx'.


Selepas ini apa yang perlu dilakukan?

Selepas JDK dengan JavaFX dan JRE dengan JavaFX sudah disediakan, projek JavaFX sudah boleh dibina. 
  1. Pada bar menu, pilih 'File', 'New' kemudian 'Other'
  2. Daripada senarai yang terpapar, pilih 'JavaFX Project'.
  3. Tekan bebutang 'Next'.
  4. Isikan nama projek yang sesuai pada kotak input 'Project name'.
  5. Pada bahagian / seksyen 'JRE' di bawahnya, pada bulet 'Use a specific project JRE', pilih JRE yang dibina daripada Langkah 4 - 'JRE JavaFx'.
  6. Pada bahagian / seksyen, pastikan 'Create module-info.java file' tidak ditanda. 
    • Fail ini ialah fail konfigurasi projek. Sekiranya diperlukan kelak, ia masih boleh dibuat secara manual selepas projek dibina.
  7. Tekan bebutang 'Finish'. Projek untuk pembangunan Java dengan JavaFX akan dibentuk.

Itu saja. Seterusnya atur cara berkaitan JavaFX sudah boleh dibina, dikompil dan diuji. Selamat mencuba.


Friday, November 01, 2019

Implimentasi pustaka Taburan Custom Nombor Rawak menggunakan Java

Menjana nombor rawak dengan Math.random()

Pustaka bahasa pengaturcaraan Java menyediakan fungsi/metod Math.random() untuk menjana nombor rawak dalam atur cara. Metod ini akan menjana nilai dalam julat 0 hingga 1, dan nilai ini boleh digunakan untuk menjana nombor tertentu dalam julat tertentu.

Misalnya kod atur cara berikut menjana 5 nombor rawak dalam julat 0 hingga 9 :

for(int i = 0; i < 5; i++) {
    System.out.println((int)(Math.random() * 10));
}



Manakala dengan menambah 1, seperti berikut, boleh mendapatkan 5 nombor dalam julat 1 hingga 10 :

for(int i = 0; i < 5; i++) {
     System.out.println((int)(Math.random() * 10 + 1)); 
}

Kita juga boleh menjana nombor rawak dalam julat 'min' dan 'max' yang kita sendiri tetapkan. Misalnya contoh berikut menjana nombor rawak dalam lingkungan 5 hingga 9:

int min = 5;
int max = 9;
for(int i = 0; i < 5; i++) {
    System.out.println((int)(Math.random() * (max-min+1)) + min)); 
}

Menjana nombor rawak dengan taburan custom

Kebarangkalian bagi nombor dalam julat di atas untuk muncul/dipilih, secara amnya ialah sama rata, iaitu 1/N bagi setiap nombor (Misalnya julat 1 hingga 10, N=10, maka 1/10 = 0.1 bagi 1, 1/10 = 0.1 bagi 2, dan seterusnya sehingga 10).

Tapi bagaimana kita boleh menjana nombor rawak dalam julat 1 hingga 10 dengan pemberat tertentu, misalnya 50% percubaan (kebarangkalian 0.5, atau 1/2) mendapat nombor 4? Atau menetapkan 20% balingan dadu akan kena pada nombor 6? Bagaimana kita hendak menggunakan Math.random() untuk menjana nombor rawak berdasarkan pemberat/kebarangkalian yang ditetapkan? Pustaka Java yang asas ini tidak menyediakannya.

Saya cuba mencari implimentasi sedia ada, dan terjumpa perbincangan mengenainya di sini -> https://stackoverflow.com/questions/16435639/generating-random-integers-within-range-with-a-probability-distribution

Daripada perbincangan tersebut, saya mendapat idea untuk mengimplimentasi suatu kelas pustaka sendiri (dinamakan CustomProbabilityRandom), yang membolehkan seseorang pengatur cara menjana nombor rawak mengikut kebarangkalian tertentu. (Lihat senarai kod atur cara dalam fail CustomProbabilityRandom.java di bawah. Turut disertakan contoh aplikasi untuk cara menggunakan pustaka, iaitu fail ExampleCustomDistribution.java).

Dengan menggunakan kelas ini, agak mudah untuk menetapkan taburan kebarangkalian bagi suatu senarai item-item (nombor rawak yang dijana mewakili index bagi item dalam senarai).

Sebenarnya implimentasi ini tidaklah benar-benar menghasilkan nombor rawak mengikut taburan yang ditetapkan, tetapi hanya boleh menghampiri taburan tersebut. Namun diharap dengan implimentasi ini akan memudahkan anda membina aplikasi yang melibatkan nombor rawak dengan lebih fleksibel. Untuk mengkompil kod atur cara aplikasi dalam ExampleCustomDistribution.java, anda perlu kompil bersama-sama dengan fail pustaka CustomProbabilityRandom.java.

Selamat mencuba.




Fail 'CustomProbabilityRandom.java' (pustaka)





Fail 'ExampleCustomDistribution.java' (aplikasi)