来自Swing并且是JavaFX的新手我试图将Java FX阶段和场景子类化。但是我很快就遇到了问题,比如init方法不是我在初始化期间没有找到的子类。
所以我想知道:Java FX阶段和场景是否会被子类化,就像在Swing中将JFrame和JPanel子类化,或者这是不鼓励的?
答案 0 :(得分:3)
您可以以完全相同的方式继承Scene
和Stage
以及许多其他FX库类。我不确定我是否会推荐它,它似乎不是官方教程中任何示例中出现的样式。 (事实上,我很久以前在绝大多数的swing代码中都停止使用JFrame
和JPanel
的子类,而更喜欢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);
}
}