标题可能有点含糊,所以让我对其定义更好一些。我有一段有效的代码(在下面):我正在开发的游戏的简单主菜单。除“开始”按钮外,其他所有内容均正常运行。
我想要做的是单击“开始”按钮,并在同一阶段(窗口)中出现一个新场景。我不想看到一个新窗口打开。我已经与Java经验丰富的人进行了交谈,他们告诉我为MenuFX和GameFX创建单独的类。如果是这种情况,我需要从MenuFX类中调用GameFX类上的一些启动或启动方法,对吗?这是最好的方法,还是我想将所有与FX相关的代码都放在一个类中?另外,我应该在所有外汇工作中保持同一阶段,不是吗?
这篇文章阐明了一些事情,但是我对所讨论的某些术语并不精通-例如,我仍然不了解Root的概念。
另外,本文讨论了类似的应用程序,但是我没有使用FXML或SceneBuilder …我不知道其中是否有任何关系。
MenuFX.java-
为简洁起见,我删除了一些工作代码。您可以看到,我需要帮助的是将“开始”按钮与某些功能结合在一起,从而创建了一个新的空白场景。
/*
* This is simply working on the title screen.
*/
// Asssume all imports are correct
import java.everythingNeeded
public class MenuFX extends Application {
@Override
public void start (Stage primaryStage) {
// Make the window a set size...
primaryStage.setResizable(false);
// Create menu vbox and set the background image
VBox menuVBox = new VBox(30);
menuVBox.setBackground(new Background(new BackgroundImage(new
Image("image/bambooBG.jpg"), null, null, null, new BackgroundSize(45,
45, true, true, true, true))));
// Create start button
Button startButton = new Button("Start Game");
// TODO Some things...
// Need assistance here
// Create help button
Button helpButton = new Button("Help");
helpButton.setOnAction(e -> THINGS);
// Create music toggle button
ToggleButton musicButton = new ToggleButton("Music On/Off");
musicButton.setOnAction(e -> THINGS);
// Create credits button
Button creditsButton = new Button("Credits");
creditsButton.setOnAction(THINGS);
// Create exit button and set it to close the program when clicked
Button endButton = new Button("Exit Game");
endButton.setOnAction(e -> Platform.exit());
// Add all nodes to the vbox pane and center it all
// Must be in order from top to bottom
menuVBox.getChildren().addAll(startButton, helpButton, musicButton, creditsButton, endButton);
menuVBox.setAlignment(Pos.CENTER);
// New scene, place pane in it
Scene scene = new Scene(menuVBox, 630, 730);
// Place scene in stage
primaryStage.setTitle("-tiles-");
primaryStage.setScene(scene);
primaryStage.show();
}
// Needed to run JavaFX w/o the use of the command line
public static void main(String[] args) {
launch(args);
}
}
重新开始:我想单击开始按钮,并将当前打开的窗口更改为空场景。
这是完整的MenuFX类的pastebin:http
://pastebin.com/n6XbQfhc
感谢您的任何帮助,
巴格尔
这里的基本思想是您将执行以下操作:
public class GameFX {
private final BorderPane rootPane ; // or any other kind of pane, or Group...
public GameFX() {
rootPane = new BorderPane();
// build UI, register event handlers, etc etc
}
public Pane getRootPane() {
return rootPane ;
}
// other methods you may need to access, etc...
}
现在回到MenuFX
班上
Button startButton = new Button("Start Game");
startButton.setOnAction(e -> {
GameFX game = new GameFX();
primaryStage.getScene().setRoot(game.getRootPane());
});
问题内容: 如何在单个场景中检测到多个关键事件?我需要我的程序来检测何时同时按下空格键 和 向右箭头键。 前三个表达式查找单个键并正常工作。最终表达式永远不会返回true。我相信只有最新的键事件才传递给处理程序。 我查看了KeyCodeCombination,但是这似乎适用于键具有指定列表(ALT_DOWN,SHIFT_DOWN等)中的修饰键的情况。 我可以使用FX中的实用程序吗? 问题答案: 试
我正在使用场景构建器2.0,我想让一个按钮在默认情况下被禁用。这是很好的工作,但我想使它启用,如果两个布尔设置为真。在场景构建器中,如何向按钮的状态添加条件? 因此,下面的launchButton方法是单击按钮时将发生的情况。并且checkBox方法中的布尔值应该以某种方式连接到场景构建器。
问题内容: 我正在寻找某种有关组织应用程序的建议。 当您拥有包含内容选择的主菜单时,请按一个按钮,则获取控制器有两个选择:a)更改当前显示主菜单的内容b)创建一个新场景并将舞台切换到该场景一 你在用什么 有什么最佳实践吗? 目前,我更喜欢a),因为我可以保持事物链接状态栏等,但这是“干净”的方式吗? 问题答案: 首先,需要考虑一些事情: 1)更改场景将取消链接到您附加到该事件处理程序的链接,并且可
主要内容:创建单选按钮,单选按钮组,单选按钮事件,单选按钮焦点单选按钮通常组合在一起,以便用户进行单选,即用户只能在单选按钮列表中选择一个项目。 例如,当选择鞋子尺寸时,我们通常从列表中选择一个尺寸。 单选按钮只能执行:选择或取消选择。 以下代码显示,当放置在中时,只能选择一个。 上面的代码生成以下结果。 创建单选按钮 包中的类有两个构造函数。 要为其标签创建一个带有空字符串的单选按钮,然后再设置标签。 要创建具有指定标签的单选按钮。 方法带有参数可以显式选
我是这里的Java和JavaFx新手,我想问一个问题。简单地说,我有一个阶段,有一个按钮和一个特定大小的场景,我用这样的编码声明了场景的大小: 基本上,我试图通过点击一个按钮来增加当前舞台/场景的大小,但不知怎么的,出现了一些错误,我得到了运行时错误,它说“java.lang.IllegalArgumentException:Grid hgap=0.0,vgap=10.0,alignment=CE
我试图在JavaFX中单击按钮时检索XLS文件并将其加载到TableView中。我使用Task类和ExecutorService来启动新线程。我需要reader类是可重用的,但是FileChooser没有出现。 这是我尝试编写一些并发代码。我想知道我做错了什么,我将如何改进我的代码,因为一切都是事件驱动的? 控制器类代码 阅读器类文件