如何从JavaFX中的SceneBuilder访问UI组件

马丁·普费弗

(重复并解决-参见下面的答案)

我正在用JavaFX做我的第一步,似乎很难使用“ SceneBuilder”。我已经习惯了Android和QtCreator。在我看来,访问UI组件要容易得多。

类似于findViewById(R.id.btnPushMe);<-Android代码

其实我有一个解决方案,但是使用起来很不舒服。看起来是这样的:

FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("../fmxl/main.fxml"));

AnchorPane pane = loader.load();
System.out.println("panechilds:" + pane.getChildren().size());

BorderPane border = (BorderPane) pane.getChildren().get(0);
System.out.println("borderchilds:" + border.getChildren().size());

xml ..

<AnchorPane fx:id="mAnchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0"
            xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.progui.MainController">
    <children>
        <BorderPane layoutX="-1.0" prefHeight="600.0" prefWidth="800.0">
            <top>

               ...

预先感谢马丁

编辑:

这是一个重复的问题(但我不会删除它,因为我花了一些时间来找到答案-也许是因为JavaFX的询问不如Android问题多。)

AnchorPane anchor = (AnchorPane) scene.lookup("#mAnchor");

在这里找到:如何在JavaFX中查找具有ID的元素?

詹姆斯·D

您应该使用控制器类并在那里访问UI元素。

基本上,您会这样做:

<AnchorPane fx:id="mAnchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="800.0"
            xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.progui.MainController">
    <children>
        <BorderPane fx:id="border" layoutX="-1.0" prefHeight="600.0" prefWidth="800.0">
            <top>

               ...

然后您可以使用以下命令访问fx:id控制器中-attributed元素

package app.progui ;

// ...

public class MainController {

    @FXML
    private BorderPane border ;


    public void initialize() {
        border.setStyle("-fx-background-color: antiquewhite;");
        // ...
    }

    // ...
}

控制器类中的字段名称必须与fx:idFXML文件中的匹配

可以fx:id在调用的类中访问-attributed元素FXMLLoader,但是如果您需要这样做,通常表明您的总体设计是错误的。你可以做:

FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("../fmxl/main.fxml"));

AnchorPane pane = loader.load();
Map<String, Object> fxmlNamespace = loader.getNamespace();
BorderPane border = (BorderPane) fxmlNamespace.get("border");

假设fx:id上面截断了FXML中定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaFX如何从SceneBuilder设置ImageView

来自分类Dev

SceneBuilder中的JavaFX和TableView

来自分类Dev

JavaFX Scene Builder-如何访问组件

来自分类Dev

Scenebuilder 2.0中的自定义组件

来自分类Dev

如何在Gridpane中获得相同的TitledPanes垂直尺寸?(JavaFX,Scenebuilder)

来自分类Dev

在JavaFX和SceneBuilder中单击按钮时如何创建新标签?

来自分类Dev

如何在React组件中访问JSON?

来自分类Dev

组件应如何访问商店中的数据?

来自分类Dev

ReactRouter:如何访问组件中的路由参数

来自分类Dev

如何访问在父模块中声明的组件

来自分类Dev

如何访问子组件中的父数据

来自分类Dev

如何从内部框架访问JFrame中的组件

来自分类Dev

unity 如何访问类中的组件

来自分类Dev

如何访问反应组件中的样式元素?

来自分类Dev

如何从方法中的组件访问数据

来自分类Dev

如何从材质 UI 按钮组件访问主类功能?

来自分类Dev

嵌套ui组件并在Elm中访问全局数据

来自分类Dev

在Delphi中创建可访问的UI组件时遇到的问题

来自分类Dev

如何在父组件中访问子组件的引用

来自分类Dev

如何在Angular 9中从子组件访问父组件

来自分类Dev

如何访问功能组件中的类组件方法?

来自分类Dev

ReactJS:如何访问父组件中的所有子组件?

来自分类Dev

如何从父反应组件访问子反应组件中的数据

来自分类Dev

如何从React中的复合组件访问html组件?

来自分类Dev

JXBrowser - 如何将 BrowserView 组件导入 SceneBuilder

来自分类Dev

无法填充在SceneBuilder 2中创建的JavaFX TableView

来自分类Dev

JavaFx-SceneBuilder中的选项卡顺序

来自分类Dev

单元格中的JavaFX / SceneBuilder StringProperty [value:]文本

来自分类Dev

数据未显示在我的表 JavaFX/SceneBuilder 中

Related 相关文章

  1. 1

    JavaFX如何从SceneBuilder设置ImageView

  2. 2

    SceneBuilder中的JavaFX和TableView

  3. 3

    JavaFX Scene Builder-如何访问组件

  4. 4

    Scenebuilder 2.0中的自定义组件

  5. 5

    如何在Gridpane中获得相同的TitledPanes垂直尺寸?(JavaFX,Scenebuilder)

  6. 6

    在JavaFX和SceneBuilder中单击按钮时如何创建新标签?

  7. 7

    如何在React组件中访问JSON?

  8. 8

    组件应如何访问商店中的数据?

  9. 9

    ReactRouter:如何访问组件中的路由参数

  10. 10

    如何访问在父模块中声明的组件

  11. 11

    如何访问子组件中的父数据

  12. 12

    如何从内部框架访问JFrame中的组件

  13. 13

    unity 如何访问类中的组件

  14. 14

    如何访问反应组件中的样式元素?

  15. 15

    如何从方法中的组件访问数据

  16. 16

    如何从材质 UI 按钮组件访问主类功能?

  17. 17

    嵌套ui组件并在Elm中访问全局数据

  18. 18

    在Delphi中创建可访问的UI组件时遇到的问题

  19. 19

    如何在父组件中访问子组件的引用

  20. 20

    如何在Angular 9中从子组件访问父组件

  21. 21

    如何访问功能组件中的类组件方法?

  22. 22

    ReactJS:如何访问父组件中的所有子组件?

  23. 23

    如何从父反应组件访问子反应组件中的数据

  24. 24

    如何从React中的复合组件访问html组件?

  25. 25

    JXBrowser - 如何将 BrowserView 组件导入 SceneBuilder

  26. 26

    无法填充在SceneBuilder 2中创建的JavaFX TableView

  27. 27

    JavaFx-SceneBuilder中的选项卡顺序

  28. 28

    单元格中的JavaFX / SceneBuilder StringProperty [value:]文本

  29. 29

    数据未显示在我的表 JavaFX/SceneBuilder 中

热门标签

归档