【问题标题】:Utility method to create and show JavaFX Application for a Pane为窗格创建和显示 JavaFX 应用程序的实用方法
【发布时间】:2019-02-22 16:49:12
【问题描述】:

我正在尝试创建一个实用方法来创建和显示一个以窗格作为参数的 JavaFx 应用程序。它不一定是运行 javaFx 应用程序的“正确”方式,因为它实际上只是一种快速测试窗格外观的方法。

这是我正在尝试做的 java swing 等价物:

具有创建和显示带有传入组件(即JPanel)的JFrame的方法的实用程序类:

public class FrameUtility {

public static void createAndShowJFrame(JComponent component) {
        JFrame frame = new JFrame();

        frame.add( component );

        frame.pack();
        frame.setVisible(true);
    }
}

示例用法:

public class CustomPanel extends JPanel {

    //Custom Panel Code....

    //Test method
    public static void main(String[] args) {
        FrameUtility.createAndShowJFrame( new CustomPanel() );
    }
}

这在 JavaFx 中可行吗?

【问题讨论】:

  • 这个实用方法是打算成为更大应用程序的一部分还是只是一个测试应用程序?
  • 一种方式或另一种类需要重新编译。为什么不在start 方法中简单地调整行Parent root = someNode; 的右侧?否则stackoverflow.com/questions/24611789/…
  • @Slaw 该实用程序方法将位于其他各种模块/项目中使用的“通用”库中。我试图避免不得不处理添加填充/布局管理器和清理额外的导入
  • 好吧,从您发布的 Swing 代码中,等效的 JavaFX 代码将创建 ScenePane 作为根,创建一个 Stage,设置 Scene Stage,并显示Stage(即stage.show())。如果您在创建 Scene 时未指定尺寸,它将使用根的首选尺寸。注意根只需要是ParentPane 是它的子类。

标签: java javafx


【解决方案1】:

创建一个新阶段并将窗格作为参数传递。我想您必须为不同类型的窗格重载此方法,但它是您描述的快速测试方法。

public void tryThisPane(BorderPane pane){
    Stage stage = new Stage();
    Scene scene = new Scene(pane);
    stage.setScene(scene);
    stage.show();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2017-08-10
    相关资源
    最近更新 更多