FXML injection
FXML injection
Sekarang kita akan tambah fungsi kepada button tersebut menggunakan
FXML injection.
Buka
HomeController.java dan tambah code seperti berikut:package hellojavafx.view;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
public class HomeController implements Initializable {
@FXML
private void tulisHelloWorld(ActionEvent event) {
System.out.println("Hello World!");
}
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Tips: Untuk import secara automatik menggunakan Netbeans, tekan
Ctrl+Shift+I. Pastikan juga anda import dari package javafx.
FXML injection ialah tanda @FXML yang kita letakkan pada methodtulisHelloWorld(). Jika kita tidak letak @FXML, Scene Builder takkan jumpa method tersebut.
Sekarang kita sudah boleh menghubungkan code dengan GUI kita. Double-clickpada
Home.fxml untuk membuka kembali Scene Builder. Klik pada button, dan pilih method tulisHelloWorld() di menu sebelah kanan bahagian Code.
Setelah selesai, save dan tutup Scene Builder.
Run
Sebelum run, ada sedikit yang perlu kita tukar pada code disebabkan kita ada menambah package
view sebelum ini.
Buka HelloJavaFX.java dan tukar path ke file FXML seperti berikut:
package hellojavafx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class HelloJavaFX extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("view/Home.fxml"));
Scene scene = new Scene(root);
stage.setTitle("Hello World!");
stage.setScene(scene);
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Kita juga boleh menambah title pada program kita menggunakan
stage.setTitle() seperti di atas.
Sekarang program sudah siap sedia untuk run, dan hasilnya adalah sama seperti program sebelum ini.
FXML injection (extra)
Selain untuk menambah fungsi kepada sesebuah control, FXML injection juga boleh digunakan untuk meletakkan
id pada control. Ini bertujuan untuk membolehkan kita mengawal control melalui code. Contohnya jika kita mahu tulis Hello World! di GUI.
Sekarang tambah control
Label ke atas AnchorPane. Padamkan text Labeltersebut. Buka HomeController.java dan tambah code seperti berikut:package hellojavafx.view;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
public class HomeController implements Initializable {
@FXML
private Label label;
@FXML
private void tulisHelloWorld(ActionEvent event) {
System.out.println("Hello World!");
}
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Kita juga akan membuatkan program paparkan
Hello World! di Label, bukannya di command line. Jadi, kita tukar method tulisHelloWorld() seperti berikut:package hellojavafx.view;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
public class HomeController implements Initializable {
@FXML
private Label label;
@FXML
private void tulisHelloWorld(ActionEvent event) {
if (label.getText().isEmpty()) {
label.setText("Hello World!");
} else {
label.setText("");
}
}
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
}
Buka kembali
Home.fxml. Klik pada Label, kemudian pilih id di menu sebelah kanan bahagian Code.
Save dan tutup Scene Builder. Sekarang kita sudah boleh paparkan
Hello World! terus di GUI.
Komentar
Posting Komentar