Anda di halaman 1dari 19

LAPORAN TUGAS BESAR (UAS)

PEMROGRAMAN BERORIENTASI OBJEK ‘B’


“ATM MACHINE”

Dosen :
Adi Wahyu P, S.Si.,M.Kom.

Penulis :
Yanuar Hadi (4518210022)
Lisma Sonarita (4518210022)
Alif Daffa A. (4518210022)

FAKULTAS TEKNIK
JURUSAN INFORMATIKA
2019-2020
1. Penjelasan Tentang Aplikasi yang dibuat
Aplikasi yang dibuat oleh penulis merupakan aplikasi ATM atau Automated Teller
Machine, aplikasi ini memiliki 4 buah fitur yaitu Transfer, Tarik Tunai, Setor Tunai, dan Cek
Saldo. Di aplikasi ini juga menggunakan pin sebagai kode untuk sebuah akun dapat
mengaksesnya. Aplikasi ATM ini menggunakan JavaFX yang biasa dan tidak menggunakan
Scene Builder sehingga Class Controller dan File FXML yang ada tidak memiliki isi.

A. Class
Class yang digunakan pada aplikasi ini terdapat Interface ATM dan Class Akun. Class
ATM ini digunakan sebagai interface untuk penghubung bagi Class Akun, untuk Class
Akun digunakan sebagai isi dari berbagai transaksi yang adal di aplikasi ini. Pada Class
Akun terdapat Variabel-variabel yang berkaitan dengan akun dan Method-method dari
transaksi pada Aplikasi ini. Lain dengan Class Akun, pada Interface ATM terdapat
beberapa Variabel dan Method-method yang berfungsi untuk memanggil method-
method transaksi tersebut.

B. Relasi
Untuk Relasi dari Class-Class ini, penulis menggunakan Relasi berupa
Association/Asosiasi dengan Hubungan antara Class ATM dengan Class Akun yang
berupa one to many.

C. UML (Unified Modeling Language)


2. Mock Up
Masuk ke bagian Mock Up, berikut adalah tampilan dari Mock Up yang telah penulis
buat :
A. Tampilan Login
Tampilan Login merupakan tampilan awal saat membuka Aplikasi ini, terdapat kolom
untuk memasukkan pin dan satu Tombol Enter untuk masuk ke tampilan selanjutnya.

B. Tampilan Halaman Utama


Tampilan selanjutnya adalah tampilan Halaman Utama, dimana terdapat 4 buah menu
transaksi yaitu, Transfer, Tarik Tunai, Setor Tunai, dan Cek saldo. Masing-masing pilihan
transaksi memiliki tombol untuk masuk ke halaman yang dituju, terdapat pula satu
tombol Kembali untuk Kembali ke halaman Login.
C. Tampilan Transfer
Di Halaman Transfer terdapat dua Text Field untuk menginput Nomor Rekening Tujuan
dan Jumlah uang yang ingin di transfer. Terdapat dua buah tombol yaitu tombol Enter
untuk melakukan Transaksi dan tombol Kembali untuk Kembali ke menu sebelumnya.

D. Tampilan Setor Tunai


Tampilan transaksi selanjutnya adalah tampilan Setor tunai dengan satu Text Field untuk
memasukkan Jumlah uang yang ingin di setor dan dua button seperti pada halaman
transfer.
E. Tampilan Tarik Tunai
Pada tampilan Tarik tunai ini, sama seperti tampilan pada setor tunai dengan satu buah
Text Field untuk memasukkan jumlah uang yang ingin di ambil dan dua button seperti
pada menu transfer dan setor tunai.

F. Tampilan Cek Saldo


Pada tampilan cek saldo, penulis menggunakan metode Allert atau Pop Up window
untuk informasi sisa saldo dan metode ini digunakan juga pada setiap transaksi jika telah
selesai melakukan transaksinya
3. Source Code
A. Java Main
a. Main.java
package sample;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class Main extends Application {

Stage window;
Scene scene1, scene2, scene3, scene4 ,scene5,scene6;

//Objek dari ATM (Akun)


Akun mike = new Akun("123456","Mike Wazowski","0203415503",2000000,0,0,0);
Akun jps = new Akun("654321","James P. Sullivan","1234567899",1000000,0,0,0);

@Override
public void start(Stage primaryStage){
window = primaryStage;
window.resizableProperty().setValue(false);

DecimalFormat kursIndo = (DecimalFormat) DecimalFormat.getCurrencyInstance();


DecimalFormatSymbols formatRp = new DecimalFormatSymbols();
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);

//PIN
PasswordField pin = new PasswordField();
pin.setMaxHeight(27);
pin.setMaxWidth(212);
pin.setLayoutX(189);
pin.setLayoutY(140);
pin.setAlignment(Pos.CENTER);
pin.setPromptText("Masukkan PIN");

//Text halaman login


Text txt1 = new Text("INI BANK");
txt1.setLayoutX(214);
txt1.setLayoutY(54);
txt1.setFont(Font.font("Times New Roman", 24));
txt1.setFill(Color.YELLOW);

Text txt3 = new Text("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -");


txt3.setLayoutX(4);
txt3.setLayoutY(84);
txt3.setFont(Font.font("Times New Roman", 48));
txt3.setFill(Color.YELLOW);

Text txt2 = new Text("Masukkan Pin Anda");


txt2.setLayoutX(205);
txt2.setLayoutY(124);
txt2.setFont(Font.font("Times New Roman", 14));
txt2.setFill(Color.YELLOW);

Text txt4 = new Text("006");


txt4.setLayoutX(500);
txt4.setLayoutY(20);
txt4.setFont(Font.font("Times New Roman", 14));
txt4.setFill(Color.YELLOW);

Text txt5 = new Text("PT. INI (persero), Tbk. terdaftar dan diawasi oleh Otoritas Jasa Keuangan
(OJK).");
txt5.setLayoutX(10);
txt5.setLayoutY(290);
txt5.setFont(Font.font("Times New Roman", 12));
txt5.setFill(Color.YELLOW);

Text txt6 = new Text("Tekan Enter Jika Sudah Mengisi Pin");


txt6.setLayoutX(160);
txt6.setLayoutY(190);
txt6.setFont(Font.font("Times New Roman", 14));
txt6.setFill(Color.YELLOW);

//Tombol Masuk
Button btn1 = new Button("Enter");
btn1.setLayoutX(240);
btn1.setLayoutY(200);
btn1.setOnAction(e ->
{
if(pin.getText().isEmpty()){
Alert.display("Peringatan","Pin Yang Anda Masukkan Tidak Ada");
}
else if(pin.getText().equals(this.mike.noPin)) {
window.setScene(scene2);
}
else if(pin.getText().equals(this.jps.noPin)){
window.setScene(scene2);
}
else{
Alert.display("Peringatan","Pin Yang Anda Masukkan Tidak Ada");
}
});

//Halaman Login
Pane tampilan1 = new Pane();
tampilan1.getChildren().addAll(txt4,txt1,txt3,txt2,pin,btn1,txt5,txt6);
tampilan1.styleProperty().set("-fx-background-color: #0000FF");
scene1 = new Scene(tampilan1,529,305);
//Menampilkan Selamat Datang
Text welcome = new Text("PILIH TRANSAKSI YANG ANDA INGINKAN" );
welcome.setLayoutX(30);
welcome.setLayoutY(54);
welcome.setFont(Font.font("Times New Roman", 24));
welcome.setFill(Color.YELLOW);

//Panah Ajaib
Text panah1 = new Text("<--- TRANSFER");
panah1.setFont(Font.font("Times New Roman", 16));
panah1.setLayoutX(130);
panah1.setLayoutY(100);
panah1.setFill(Color.YELLOW);
Text panah2 = new Text("<--- TARIK TUNAI");
panah2.setFont(Font.font("Times New Roman", 16));
panah2.setLayoutX(130);
panah2.setLayoutY(160);
panah2.setFill(Color.YELLOW);
Text panah6 = new Text("<--- KEMBALI");
panah6.setFont(Font.font("Times New Roman", 16));
panah6.setLayoutX(130);
panah6.setLayoutY(220);
panah6.setFill(Color.YELLOW);

Text panah3 = new Text("SETOR TUNAI --->");


panah3.setFont(Font.font("Times New Roman", 16));
panah3.setLayoutX(270);
panah3.setLayoutY(100);
panah3.setFill(Color.YELLOW);
Text panah4 = new Text("CEK SALDO --->");
panah4.setFont(Font.font("Times New Roman", 16));
panah4.setLayoutX(290);
panah4.setLayoutY(160);
panah4.setFill(Color.YELLOW);

//Tombol Kembali ke PIN


Button btn2 = new Button();
btn2.setPrefWidth(100);
btn2.setLayoutX(20);
btn2.setLayoutY(200);
btn2.setOnAction(e -> window.setScene(scene1));

//Tombol Kembali ke Menu


Button btn7 = new Button();
btn7.setOnAction(e -> window.setScene(scene2));
btn7.setPrefWidth(100);
btn7.setPrefWidth(100);
btn7.setLayoutX(20);
btn7.setLayoutY(200);

Button btn8 = new Button();


btn8.setOnAction(e -> window.setScene(scene2));
btn8.setPrefWidth(100);
btn8.setPrefWidth(100);
btn8.setLayoutX(20);
btn8.setLayoutY(200);

Button btn9 = new Button();


btn9.setOnAction(e -> window.setScene(scene2));
btn9.setPrefWidth(100);
btn9.setPrefWidth(100);
btn9.setLayoutX(20);
btn9.setLayoutY(200);

Button btn10 = new Button();


btn10.setOnAction(e -> window.setScene(scene2));
btn10.setPrefWidth(100);
btn10.setPrefWidth(100);
btn10.setLayoutX(20);
btn10.setLayoutY(200);

//Tombol Ke CekSaldo
Button btn3 = new Button();
btn3.setPrefWidth(100);
btn3.setLayoutX(410);
btn3.setLayoutY(140);
btn3.setOnAction(e->
{
if (pin.getText().equals(mike.noPin)){
Alert.display("Cek Saldo","Nama : "+this.mike.nama + "\n" + "Nomer Rekening :
"+this.mike.noRekening + "\n" + "Saldo : "+ this.mike.saldoan());
}
else if(pin.getText().equals(jps.noPin)){
Alert.display("Cek Saldo","Nama : "+this.jps.nama + "\n" + "Nomer Rekening :
"+this.jps.noRekening + "\n" + "Saldo : "+ this.jps.saldoan());
}
});

//Tombol ke Transfer
Button btn4 = new Button();
btn4.setPrefWidth(100);
btn4.setLayoutX(20);
btn4.setLayoutY(80);
btn4.setOnAction(e-> window.setScene(scene4));

//Tombol ke Tarik Tunai


Button btn5 = new Button();
btn5.setPrefWidth(100);
btn5.setLayoutX(20);
btn5.setLayoutY(140);
btn5.setOnAction(e-> window.setScene(scene5));

//Tombol ke Setor Tunai


Button btn6 = new Button();
btn6.setPrefWidth(100);
btn6.setLayoutX(410);
btn6.setLayoutY(80);
btn6.setOnAction(e-> window.setScene(scene6));

//Halaman Menu
Pane tampilan2 = new Pane();

tampilan2.getChildren().addAll(welcome,btn3,btn4,btn5,btn6,btn2,panah1,panah2,panah3,panah4,pana
h6);
tampilan2.styleProperty().set("-fx-background-color: #0000FF");
scene2 = new Scene(tampilan2,529,305);

//Cek Saldo
TextArea show = new TextArea();
show.setEditable(false);
show.setMaxWidth(200);
show.setMaxHeight(75);
show.setText("Nama : "+this.mike.nama + "\n" + "Nomer Rekening : "+this.mike.noRekening +
"\n" + "Saldo : "+ this.mike.saldoan());

//Halaman Cek Saldo


VBox tampilan3 = new VBox(20);
tampilan3.setAlignment(Pos.CENTER);
tampilan3.getChildren().addAll(show,btn8);
scene3 = new Scene(tampilan3,350,350);

//Transfer
TextField trsfd = new TextField();
trsfd.setLayoutX(195);
trsfd.setLayoutY(110);
TextField nrk = new TextField();
nrk.setLayoutX(195);
nrk.setLayoutY(60);
Button btntrs = new Button("ENTER");
btntrs.setLayoutX(245);
btntrs.setLayoutY(150);

nrk.setMaxWidth(150);
trsfd.setMaxWidth(150);
Text tr1 = new Text("ATM TRANSFER");
tr1.setLayoutX(180);
tr1.setLayoutY(30);
tr1.setFont(Font.font("Times New Roman", 24));
tr1.setFill(Color.YELLOW);
Text tr2 = new Text("<--- KEMBALI");
tr2.setFont(Font.font("Times New Roman", 16));
tr2.setLayoutX(130);
tr2.setLayoutY(220);
tr2.setFill(Color.YELLOW);
Text tr = new Text("Jumlah Yang Ingin Ditransfer Rp.");
tr.setFont(Font.font("Times New Roman", 14));
tr.setFill(Color.YELLOW);
tr.setLayoutX(3);
tr.setLayoutY(130);
Text nr = new Text("No Rekening ");
nr.setFont(Font.font("Times New Roman", 14));
nr.setFill(Color.YELLOW);
nr.setLayoutX(3);
nr.setLayoutY(80);
btntrs.setOnAction( e ->
{
if(trsfd.getText().isEmpty() && nrk.getText().isEmpty()){
Alert.display("Peringatan","Harap Masukkan Uang Yang Ingin Di Transfer dan No Rekening
Tujuan");
}
else if(trsfd.getText().isEmpty()){
Alert.display("Peringatan","Harap Masukkan Uang Yang Ingin Di Transfer");
}
else if(nrk.getText().isEmpty()){
Alert.display("Peringatan","Harap Masukkan No Rekening Tujuan");
}

else {this.mike.transfer(Integer.parseInt(trsfd.getText())); }
if(pin.getText().equals(mike.noPin) && this.mike.trs > this.mike.saldo){
Alert.display("Peringatan", "Saldo Kurang");
}

else {this.mike.transfer(Integer.parseInt(trsfd.getText())); }
if(pin.getText().equals(mike.noPin) && this.mike.trs < this.mike.saldo ){
Alert.display("Transfer Berhasil", "Ke Rekening = " + nrk.getText() + "\n" + "Dengan
Transfer Sebesar Rp." + mike.lhttransfer() +"\n"+"Saldo Anda Sekarang "+ mike.transferan() );
}

else {this.jps.transfer(Integer.parseInt(trsfd.getText())); }
if(pin.getText().equals(jps.noPin) && this.jps.trs > this.jps.saldo){
Alert.display("Peringatan", "Saldo Kurang");
}

else {this.jps.transfer(Integer.parseInt(trsfd.getText())); }
if(pin.getText().equals(jps.noPin) && this.jps.trs < this.jps.saldo ){
Alert.display("Transfer Berhasil", "Ke Rekening = " + nrk.getText() + "\n" + "Dengan
Transfer Sebesar Rp." + jps.lhttransfer() +"\n"+"Saldo Anda Sekarang "+ jps.transferan() );
}
});
//Halaman Transfer
Pane tampilan4 = new Pane();
tampilan4.styleProperty().set("-fx-background-color: #0000FF");
tampilan4.getChildren().addAll(nr,nrk,tr,trsfd,btntrs,btn9,tr1,tr2);
scene4 = new Scene(tampilan4,529,305);

//Tarik Tunai
TextField trkfd = new TextField();
trkfd.setLayoutX(195);
trkfd.setLayoutY(85);
trkfd.setMaxWidth(150);
Button btntrk = new Button("ENTER");
btntrk.setLayoutX(245);
btntrk.setLayoutY(125);
Text trk = new Text("Jumlah Yang Ingin Di Tarik Rp.");
trk.setFont(Font.font("Times New Roman", 14));
trk.setFill(Color.YELLOW);
trk.setLayoutX(5);
trk.setLayoutY(105);
Text trk1 = new Text("ATM PENARIKAN");
trk1.setLayoutX(160);
trk1.setLayoutY(30);
trk1.setFont(Font.font("Times New Roman", 24));
trk1.setFill(Color.YELLOW);
Text trk2 = new Text("<--- KEMBALI");
trk2.setFont(Font.font("Times New Roman", 16));
trk2.setLayoutX(130);
trk2.setLayoutY(220);
trk2.setFill(Color.YELLOW);
btntrk.setOnAction( e ->
{
if(trkfd.getText().isEmpty() ){
Alert.display("Peringatan","Harap Masukkan Uang Yang Ingin Di Tarik");
}

else {this.mike.tarikTunai(Integer.parseInt(trkfd.getText())); }
if(pin.getText().equals(mike.noPin) && this.mike.tarik > this.mike.saldo){
Alert.display("Peringatan", "Saldo Kurang");
}

else {this.mike.tarikTunai(Integer.parseInt(trkfd.getText())); }
if(pin.getText().equals(mike.noPin) && this.mike.tarik < this.mike.saldo ){
Alert.display("Penarikan Berhasil", "\n" + "Penarikan Sebesar Rp." + mike.lhttarikan()
+"\n"+"Saldo Anda Sekarang "+ mike.tarikan() );
}

else {this.jps.tarikTunai(Integer.parseInt(trkfd.getText())); }
if(pin.getText().equals(jps.noPin) && this.jps.tarik > this.jps.saldo){
Alert.display("Peringatan", "Saldo Kurang");
}

else {this.jps.tarikTunai(Integer.parseInt(trkfd.getText())); }
if(pin.getText().equals(jps.noPin) && this.mike.tarik < this.jps.saldo ){
Alert.display("Penarikan Berhasil", "\n" + "Penarikan Sebesar Rp." + jps.lhttarikan()
+"\n"+"Saldo Anda Sekarang "+ jps.tarikan() );
}
});
//Halaman Tarik Tunai
Pane tampilan5 = new Pane();
tampilan5.styleProperty().set("-fx-background-color: #0000FF");
tampilan5.getChildren().addAll(trk,trkfd,btntrk,btn10,trk1,trk2);
scene5 = new Scene(tampilan5,529,305);

//Setor Tunai
TextField strfd = new TextField();
strfd.setLayoutX(195);
strfd.setLayoutY(85);
strfd.setMaxWidth(150);
Button btnstr = new Button("ENTER");
btnstr.setLayoutX(245);
btnstr.setLayoutY(125);
Text str = new Text("Jumlah Yang Ingin Di Setor Rp.");
str.setFont(Font.font("Times New Roman", 14));
str.setFill(Color.YELLOW);
str.setLayoutX(5);
str.setLayoutY(105);
Text str1 = new Text("ATM SETORAN");
str1.setLayoutX(180);
str1.setLayoutY(30);
str1.setFont(Font.font("Times New Roman", 24));
str1.setFill(Color.YELLOW);
Text str2 = new Text("<--- KEMBALI");
str2.setFont(Font.font("Times New Roman", 16));
str2.setLayoutX(130);
str2.setLayoutY(220);
str2.setFill(Color.YELLOW);
btnstr.setOnAction( e ->
{
if(strfd.getText().isEmpty() ){
Alert.display("Peringatan","Harap Masukkan Uang Yang Ingin Di Setor");
}

else {this.mike.setorTunai(Integer.parseInt(strfd.getText()));}
if(pin.getText().equals(mike.noPin)) {
Alert.display("Setoran Berhasil", "\n" + "Setoran Sebesar " + mike.lhtsetoran()+ "\n" + "Saldo
Anda Sekarang " + mike.setoran());
}

else {this.jps.setorTunai(Integer.parseInt(strfd.getText()));}
if(pin.getText().equals(jps.noPin)) {
Alert.display("Setoran Berhasil", "\n" + "Setoran Sebesar " + jps.lhtsetoran() + "\n" + "Saldo
Anda Sekarang " + jps.setoran());
}
});
//Halaman Setor Tunai
Pane tampilan6 = new Pane();
tampilan6.styleProperty().set("-fx-background-color: #0000FF");
tampilan6.getChildren().addAll(str,strfd,btnstr,btn7,str1,str2);
scene6 = new Scene(tampilan6,529,305);

//Menampilkan
window.setScene(scene1);
window.setTitle("INI ATM");
window.show();

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

b. Akun.java
package sample;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

public class Akun implements Atm{


public String noPin;
public String nama;
public String noRekening;
public int saldo;
protected int trs;
protected int setor;
protected int tarik;

public Akun(String noPin, String nama, String noRekening,int saldo,int setorIn,int tarikIn,int trsIn) {
this.nama = nama;
this.noPin = noPin;
this.noRekening = noRekening;
this.saldo = saldo;
this.trs = trsIn;
this.setor = setorIn;
this.tarik = tarikIn;
}
DecimalFormat kursIndo = (DecimalFormat) DecimalFormat.getCurrencyInstance();
DecimalFormatSymbols formatRp = new DecimalFormatSymbols();

@Override
public void setorTunai(int setorIn) {
setor = setorIn;
}

@Override
public void tarikTunai(int tarikIn) {
tarik = tarikIn;
}
@Override
public void transfer(int transferIn) {
trs = transferIn;
}

@Override
public String transferan() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
this.saldo = this.saldo - trs;
return kursIndo.format(saldo);
}

@Override
public String setoran() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
this.saldo = this.saldo + setor;
return kursIndo.format(saldo);
}

@Override
public String tarikan() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
this.saldo = this.saldo - tarik;
return kursIndo.format(saldo);
}

@Override
public Serializable saldoan() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
return kursIndo.format(saldo);
}
@Override
public String lhttarikan() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
return kursIndo.format(tarik);
}

@Override
public String lhtsetoran() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
return kursIndo.format(setor);
}

@Override
public String lhttransfer() {
formatRp.setCurrencySymbol("Rp. ");
formatRp.setMonetaryDecimalSeparator(',');
formatRp.setGroupingSeparator('.');
kursIndo.setDecimalFormatSymbols(formatRp);
return kursIndo.format(trs);
}
}

B. Java Controller
package sample;

public class Controller {


}

Disini untuk Class Controller tidak memiliki isi karena penulis membuat Aplikasi ini
menggunakan JavaFX biasa dan tidak menggunakan Scene Builder.

C. Java FakeMain
package sample;

public class FakeMain {

public static void main(String[] args) {


Main.main(args);
}
}

Class FakeMain ini dibuat untuk keperluan pembuatan file Executable .JAR

D. File FXML
Sample.fxml
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.application.Application?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Main"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>

Di file FXML ini hanya tersisi code default untuk sample.fxml saat membuat project.

4. Pembuatan File Executable .JAR


1. Buat Class FakeMain

2. Pilih File -> Project Structure -> Artifacts

3. pilih ‘+’ -> JAR -> From modules with depedencies


4. Pilih FakeMain pada kolom main class dan klik ok
5. Klik tombol ‘+’ pada bagian bawah Output Layout kemudian pilih file, selanjutnya cari
folder bin pada folder javafx sdk dan copy semua isi dari folder bin kemudian ok.

6. Klik Apply dan Ok


7. Pilih Build -> Build Artifacts

8. File .JAR sudah selesai dibuat dan bisa dijalankan

9. Klik kanan pada file jar, kemudia run ‘file.jar’ dan tunggu beberapa detik

Anda mungkin juga menyukai