Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javaFX和场景生成器中切换场景时遇到问题_Java_Javafx_Scenebuilder - Fatal编程技术网

在javaFX和场景生成器中切换场景时遇到问题

在javaFX和场景生成器中切换场景时遇到问题,java,javafx,scenebuilder,Java,Javafx,Scenebuilder,我有两种观点: 一个带有“移动到第二视图”按钮,另一个带有标签。 我试图通过点击按钮在两个场景之间切换 为此,我编写了以下代码:(Controller类是第一个场景的控制器) 问题是编辑器告诉我它无法解析方法getScene() 我怎样才能解决这个问题 如何对类进行强制转换,您可以在类前面的括号中添加要强制转换的内容。 返回的结果被转换到括号之间的对象 // Simple casting, otherThing gets cast to Foo var something = (Foo)othe

我有两种观点:
一个带有“移动到第二视图”按钮,另一个带有标签。
我试图通过点击按钮在两个场景之间切换

为此,我编写了以下代码:(Controller类是第一个场景的控制器)

问题是编辑器告诉我它无法解析方法
getScene()


我怎样才能解决这个问题

如何对类进行强制转换,您可以在类前面的括号中添加要强制转换的内容。
返回的结果被转换到括号之间的对象

// Simple casting, otherThing gets cast to Foo
var something = (Foo)otherThing;

// Whatever is returned by getThing() gets cast to Foo
var something = (Foo)otherThing.getThing();

// Whatever is returned by makeThing() gets cast to Foo
var something = (Foo)otherThing.getThing().makeThing();
因此,简而言之,在本例中,您希望分配给变量的任何内容都会被转换为您希望将其转换为的对象

因此,如果我们用以下逻辑剖析您的代码:

(Stage)((Node)event.getScene().getWindow());

// assigning to individual variables.
Node window = (Node)event.getScene().getWindow();
Stage stage = (Stage)window;
因此,无论您将
getWindow()
转换到Stage时返回什么。这不是你想要的逻辑。此外,代码中缺少了一个重要步骤。您需要首先对事件对象调用
getSource()

event.getSource()
返回一个
节点
对象(希望在施放前进行防弹检查)。
节点
对象允许您访问所需的方法

final Node source = (Node)event.getSource();
final Stage stage = (Stage)source.getScene().getWindow();
在通过层进行转换时,尝试将变量分配给它们自己的类型,以帮助您推断逻辑并查找错误。当你投下鸟巢时,它可能会变得一团糟。与上面两个代码相比,看看正确实现时代码的一行代码是否正常工作。哪一个更清楚

(Stage)(((Node)event.getSource()).getScene().getWindow());
(Stage)(((Node)event.getSource()).getScene().getWindow());