- init():初始化JavaFX應用程式。
- start():為JavaFX應用程式的進入點,在此為Java Applet。
- launch():啟動獨立 (Standalone) 的JavaFX應用程式,在此為視窗程式。
- stop():當JavaFX應用程式結束之前,將執行stop()方法。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
...
// 繼承javafx.application.Application抽象類別
public class JavaFXHelloWorld extends Application {
@Override
public void start(Stage primaryStage) {
...
}
public static void main(String[] args) {
launch(args);
}
}
其中javafx.stage.Stage類別為JavaFX最上層的容器 (Container),類似於Java Swing的JRootPane類別,用以置放Scene或SubScene物件。javafx.scene.Scene類別則是JavaFX Scene Graph,可藉以繪圖或配置各類GUI物件。因此欲在原視窗中產生另一個新視窗,只要使用Stage類別則可,以下範例示範當點選原視窗中的按鈕時,則產生另一個新視窗:
public class StageDemo extends Application {
@Override
public void start(Stage primaryStage) {
// Normal Button
Button button = new Button();
button.setText("New Window");
button.setPrefSize(150, 20);
button.setOnAction(event -> {
newWindow();
});
BorderPane borderpane = new BorderPane();
borderpane.setCenter(button);
// Set the Layout Pane of Scene
Scene scene = new Scene(borderpane);
// Set the title of Stage
primaryStage.setTitle("Stage Demo");
// Set the width of Stage
primaryStage.setWidth(250);
// Set the height of Stage
primaryStage.setHeight(150);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
// Show Stage
primaryStage.show();
}
private void newWindow(){
Label label1 = new Label("Name:");
Label label2 = new Label("Birthday:");
Label label3 = new Label("Tel.:");
TextField textfield1 = new TextField();
textfield1.setText("Athena");
textfield1.setPrefColumnCount(15);
textfield1.selectAll();
textfield1.setTooltip(new Tooltip("Name"));
TextField textfield2 = new TextField();
textfield2.setPrefColumnCount(15);
textfield2.setAlignment(Pos.CENTER_RIGHT);
textfield2.setCursor(Cursor.CROSSHAIR);
textfield2.setTooltip(new Tooltip("Birthday"));
TextField textfield3 = new TextField();
textfield3.setText("1234567890");
textfield3.setPrefColumnCount(15);
textfield3.setAlignment(Pos.CENTER);
textfield3.setCursor(Cursor.HAND);
textfield3.selectAll();
textfield3.setTooltip(new Tooltip("Phone Number"));
GridPane gridpane = new GridPane();
gridpane.setAlignment(Pos.CENTER);
gridpane.setHgap(10);
gridpane.setVgap(10);
gridpane.setPadding(new Insets(5, 5, 5, 5));
gridpane.add(label1, 0, 0);
gridpane.add(label2, 0, 1);
gridpane.add(label3, 0, 2);
gridpane.add(textfield1, 1, 0);
gridpane.add(textfield2, 1, 1);
gridpane.add(textfield3, 1, 2);
// Set the Layout Pane of Scene
Scene scene = new Scene(gridpane);
Stage stage = new Stage();
// Set the title of Stage
stage.setTitle("New Window");
// Set the width of Stage
stage.setWidth(300);
// Set the height of Stage
stage.setHeight(150);
stage.setScene(scene);
stage.setResizable(false);
// Show Stage
stage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
【執行結果】當點選原視窗中的按鈕時,則產生另一個新視窗:
[1] Java Official Web Site:http://www.oracle.com/technetwork/java/index.html
[2] JavaFX:http://www.oracle.com/technetwork/java/javafx
[3] JavaFX 8.0 API Specification.
[4] Java Platform, Standard Edition 8 API Specification.
© Chia-Hui Huang

沒有留言:
張貼留言