【问题标题】:JavaFx, Not to display content at the beginningJavaFx,不在开头显示内容
【发布时间】:2015-08-08 07:01:43
【问题描述】:

我正在编写一个 javafx 程序,用于移动文本。程序在开头显示背景(一些红点)和文本。

现在,我想添加一个菜单来选择要显示的文本内容。另外,我想让场景一开始什么都不显示,然后在我选择文本内容后,程序开始显示一切......

有什么特殊的命令可以实现吗?

PS:我添加内容(文本和形状)->“组”->“根”。

【问题讨论】:

  • 我认为您需要在菜单上使用听众。这篇文章可以帮助你隐藏你的内容:stackoverflow.com/questions/23097086/…
  • @romfret,非常感谢您提供的链接。我刚刚阅读了教程,docs.oracle.com/javafx/2/api/javafx/stage/Stage.html#close()。但是“.toBack()”只能应用于舞台,当我尝试将此命令应用于我的内容(添加到“组”的形状和文本)时,它会引发错误。
  • 你有菜单吗?向我们展示代码。如果您想隐藏某些内容,例如带有控件的布局,请使用例如borderPane.setVisible(false);,反之亦然。您还需要监听菜单操作。

标签: java javafx


【解决方案1】:

我认为你想要的是这样的:

public class PersonOverviewController implements Initializable{

    @FXML 
    BorderPane paneWithControls;
    @FXML
    MenuItem menuItem;
    @FXML
    Label text;



    @FXML
    private void initialize() {
        paneWithControls.setVisible(false); //hide content
        menuItem.setOnAction(new EventHandler<ActionEvent>() { //implementing action listener
            @Override
            public void handle(ActionEvent event) {
                text.setText("Some text you want to display"); //set value for controls
                paneWithControls.setVisible(true); //display content
            }
        });
    }

}

编辑:

如果你真的想“隐藏”场景,你可以这样做:

primaryStage.setScene(null);

及以后:

primaryStage.setScene(sceneObject1);

但是,这不是实现您正在寻找的结果的好方法。一旦你有了场景,只需改变它的根,或者设置它的控件的属性。我在学习JavaFX的时候也弄错了。

【讨论】:

  • 感谢您的回复。这正是我想做的!但是,我使用“Scene”而不是“BorderPane”创建我的场景:“Scene s1= new Scene(root,800, 600, Color.BLACK);”。我只是用谷歌搜索,但没有找到“场景”的类似命令......
  • @SuperDelta SceneBorderPane 是完全不同的两个东西,不能互换。
猜你喜欢
  • 2016-09-02
  • 2015-12-15
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多