当前位置: 首页 > 知识库问答 >
问题:

从控制器类访问场景

廖琨
2023-03-14

我是新手,正在尝试学习JavaFX和FXML。我的大部分应用程序逻辑都在FXMLController类中,基类几乎是空的,除了NetBeans IDE生成的基本代码,如下所示

@Override
public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();
}

我有一个ID为input1的元素,类型为TextField。如何通过ID访问此(或任何其他)控件?(请记住,我是控制器类而不是主类)。

我在下面找到了这个问题,这正是我要找的,但情况不同,因为它们在定义< code>scene的主类中。如何从控制器类访问< code>scene并使用下面问题中的代码?

如何在JavaFX中找到带有ID的元素?

共有1个答案

施阳夏
2023-03-14

这是我第一次回答堆栈溢出的问题,所以请手下留情。

我也是JavaFX新手,我也遇到过这个问题。这是如果找到的情况。您FXMLDocument.fxml中的TextField必须有一个fx: id分配给它,如下所示:

<TextField fx:id="input1" layoutX="0.5" layoutX="0.5" />

如果您使用的是 JavaFX 场景生成器,则可以在右侧的“代码:文本字段”下找到 fx:id。

然后,在控制器类中,您可以访问它,但使用。

@FXML public TextField input1;

您可以使用数组列表遍历所有的文本字段。这里有一个例子。

@FXML public TextField input1;
@FXML public TextField input2;
@FXML public TextField input3;
@FXML public TextField input4;
@FXML public TextField input5;
@FXML public TextField input6;
@FXML public TextField input7;
@FXML public Button button;

List<TextField> inputs = new ArrayList<TextField>();

public void displayText(ActionEvent event) {
    inputs.add(input1);
    inputs.add(input2);
    inputs.add(input3);
    inputs.add(input4);
    inputs.add(input5);
    inputs.add(input6);
    inputs.add(input7);
    for (int x = 0; x < 7; x++) {
        System.out.println(inputs.get(x).getText());
    }
}

也许有一种更简单的方法,但这种方法对我很管用。

 类似资料:
  • 问题内容: 为什么无法从另一个内部访问其他控制器方法呢? 像这样。 已编译 如果您不能这样做,那为什么不呢?我还应该怎么做… 问题答案: 最近几个小时遇到相同的问题。我使用了api / services文件夹。它可能不完全是您所需要的,但是它是一个选择。

  • 1、类属性的访问控制 在 Java 中,有 public (公共)属性 和 private (私有)属性,这可以对属性进行访问控制。 那么在 Python 中有没有属性的访问控制呢? 一般情况下,我们会使用 __private_attrs 两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。 为什么只能说一般情况下呢?

  • 在应用程序中使用JavaFX,我有一个main.fxml文件,其中包含一些fxml子文件。 我想从子控制器访问Main.fxml的MainController类。 我试着用一个例子来解释得更好: MainFXML: 主控制器: ChildFXML:

  • 容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables 防火墙来进行管理和实现。iptables 是 Linux 上默认的防火墙软件,在大部分发行版中都自带。 容器访问外部网络 容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。 $sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1 如果为 0,

  • 无法理解如何读取应用程序设置。启动之外的json值。反恐精英。例如,我想做的是在_布局中。cshtml,从配置中添加站点名称: 例如: 或者更好: 以下是我迄今为止的代码: [appsettings.json] [startup.cs] 也许我看错了文档,但我似乎无法在Startup类之外公开配置对象。