对JavaFX Stage / Scene进行子类化

时间:2015-04-25 15:00:27

标签: javafx javafx-2

来自Swing并且是JavaFX的新手我试图将Java FX阶段和场景子类化。但是我很快就遇到了问题,比如init方法不是我在初始化期间没有找到的子类。

所以我想知道:Java FX阶段和场景是否会被子类化,就像在Swing中将JFrame和JPanel子类化,或者这是不鼓励的?

1 个答案:

答案 0 :(得分:3)

您可以以完全相同的方式继承SceneStage以及许多其他FX库类。我不确定我是否会推荐它,它似乎不是官方教程中任何示例中出现的样式。 (事实上​​,我很久以前在绝大多数的swing代码中都停止使用JFrameJPanel的子类,而更喜欢FX示例中的样式。)

但它当然有可能:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class SubclassingExample extends Application {

    @Override
    public void start(Stage defaultStageIgnored) {
        Stage stage = new MyStage();
        stage.show();
    }

    public static class MyStackPane extends StackPane{
        public MyStackPane() {
            getChildren().add(new Label("Hello World"));
        }
    }

    public static class MyScene extends Scene {
        public MyScene() {
            super(new MyStackPane(), 250, 75);
        }
    }

    public static class MyStage extends Stage {
        public MyStage() {
            setScene(new MyScene());
        }
    }

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