*JavaFX Scene Builder
產生 FXMLDocumentController 後,裡面的 Class:
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; import javafx.scene.control.TextArea; import javafx.scene.text.Font; public class FXMLDocumentController implements Initializable { @FXML private Button button; @FXML private Label label; @FXML private Font x1; @FXML private TextArea servLog; //要控制的元素,加上 FXML 標籤,會自動設定。 /** * Initializes the controller class. */ @Override public void initialize(URL url, ResourceBundle rb) { // TODO servLog.setText("\n Hello world \n"); } @FXML private void handleButtonAction(ActionEvent event) { } public void addTextInArea(String text){ //透過外部控制 private 元素的方法 servLog.setText(text); } }
由於 controller 內的元素不採用 public static 之類的做法讓外部存取,所以在內部寫了一個 addTextInArea 這個方法。
透過 Main.java 啟動檔案,測試剛剛寫的方法:
import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.TextArea; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) throws Exception { FXMLLoader loader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml")); Parent root = loader.load(); FXMLDocumentController controller = (FXMLDocumentController)loader.getController(); Scene scene = new Scene(root); stage.setTitle("Transmission Pass : LAN Transfer Friendly"); stage.resizableProperty().setValue(Boolean.FALSE); stage.setScene(scene); stage.show(); controller.addTextArea("OKOKOK"); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } }
沒有留言:
張貼留言