我想在加载了FXMLoader
感谢的场景中找到VBox节点,Node#lookup()
但出现以下异常:
java.lang.ClassCastException: com.sun.javafx.scene.control.skin.SplitPaneSkin$Content cannot be cast to javafx.scene.layout.VBox
代码 :
public class Main extends Application {
public static void main(String[] args) {
Application.launch(Main.class, (java.lang.String[]) null);
}
@Override
public void start(Stage stage) throws Exception {
AnchorPane page = (AnchorPane) FXMLLoader.load(Main.class.getResource("test.fxml"));
Scene scene = new Scene(page);
stage.setScene(scene);
stage.show();
VBox myvbox = (VBox) page.lookup("#myvbox");
myvbox.getChildren().add(new Button("Hello world !!!"));
}
}
fxml文件:
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" >
<children>
<SplitPane dividerPositions="0.5" focusTraversable="true" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
<VBox fx:id="myvbox" prefHeight="398.0" prefWidth="421.0" />
</items>
</SplitPane>
</children>
</AnchorPane>
我想知道:
1.为什么查找方法返回a SplitPaneSkin$Content
而不是a VBox
?
2.我怎样才能得到VBox
另一种方式?
提前致谢
SplitPaneSkin$Content
)。出于未知原因,FXMLLoader为它们分配与root子代相同的ID。您可以通过下一个实用程序方法获得所需的VBox:public <T> T lookup(Node parent, String id, Class<T> clazz) {
for (Node node : parent.lookupAll(id)) {
if (node.getClass().isAssignableFrom(clazz)) {
return (T)node;
}
}
throw new IllegalArgumentException("Parent " + parent + " doesn't contain node with id " + id);
}
并以其他方式使用它:
VBox myvbox = lookup(page, "#myvbox", VBox.class);
myvbox.getChildren().add(new Button("Hello world !!!"));
@FXML
VBox myvbox;
我想在一个场景中找到一个VBox节点加载感谢,但我得到以下异常: 守则: fxml文件: 我想知道: 1。为什么查找方法返回的是,而不是 2。如何以另一种方式获取? 提前谢谢
我已经在这个问题上绞尽脑汁好几天了,我正在使用google sheets表单中的查询功能来提取数据的子集,但是查询是有效的,如果我在特定的几个字段中添加一个值,查询结果都是不可靠的(技术术语)。公式如下: 但是,如果我在P列(这些屏幕截图中的第5列)中添加另一个值,我会得到一些奇怪的行为: 数据本身是零星的,因为并非所有字段都将被填充,所以我的where子句只提取not空值。这些值也是数字和文本的
我调用下面的方法来计算一些值。我提供agencyID和月份的整数表示来执行计算。 等等...直到我到达12月(值12)。然而,当我到达5月(月值5)时,代码给出了一个运行时错误。然而,奇怪的是这个错误被抛出 在我的查询中,我没有在查询中的任何位置包含shift\u dayId,如下所示: 我恳请帮助我确定为什么givenMonth在值大于4时抛出运行时异常。 谢谢你 编辑 这是我要求的ShiftD
问题内容: 如果我在SQL Server Express 2008上运行此查询: 它将日期存储为2011年4月11日 我该如何预防呢? 问题答案: 使用ISO-8601格式:(或)-无论您使用哪种SQL Server语言和区域设置,它始终有效。 SQL Server中的日期 不 以任何特定的面向字符串的格式存储-日期即是日期即是日期,无论您看到什么。 您会看到日期的字符串表示形式-但又一次:日期
我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方
问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么