Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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_Fxml - Fatal编程技术网

JavaFX-如何将值设置为选项卡内的文本字段?

JavaFX-如何将值设置为选项卡内的文本字段?,java,javafx,fxml,Java,Javafx,Fxml,我试图将值设置为选项卡内的文本字段。我有多个选项卡,我想将值设置为每个选项卡内的文本字段。 您知道如何在选项卡内设置文本字段的文本吗? 我正在使用下面的代码来更新textfield的值,但是在尝试同样的操作时没有发生任何事情 代码: 更新的代码,包括FXML的Pojo类 POJO/属性类 我仍然无法设置文本字段vendorHeader1的值。 有人能指出哪里出了问题吗?您必须在TextField的text属性和用于值的SimpleStringProperty之间应用绑定。您必须以在其他类中启用绑

我试图将值设置为选项卡内的文本字段。我有多个选项卡,我想将值设置为每个选项卡内的文本字段。 您知道如何在选项卡内设置文本字段的文本吗? 我正在使用下面的代码来更新textfield的值,但是在尝试同样的操作时没有发生任何事情

代码:

更新的代码,包括FXML的Pojo类

POJO/属性类

我仍然无法设置文本字段vendorHeader1的值。 有人能指出哪里出了问题吗?

您必须在TextField的text属性和用于值的SimpleStringProperty之间应用绑定。您必须以在其他类中启用绑定选项的方式公开FXMLProps的供应商标题属性:

public class FXMLProps {

    private final SimpleStringProperty vendorHeader = new SimpleStringProperty("");

    public FXMLProps() {}

    public FXMLProps(String vendorHeader) {
        setVendorHeader(vendorHeader);
    }

    public String getVendorHeader() {
        return VendorHeader1.get();
    }

    public void setVendorHeader(String vendorHeaderText) {
        vendorHeader.set(vendorHeaderText);
    }

    // this is needed for the Binding
    public final SimpleStringProperty vendorHeaderProperty() {
        return vendorHeader;
    }
}
然后,在应用程序中的某个地方,可能在开始时,您需要创建如下绑定


您可以创建一个文本属性并将所有TextField值绑定到该属性。那就改变属性吧。看看这里:@deHaar谢谢!但是你能为同样的代码添加一些代码片段吗?我不熟悉使用标签。链接中有代码片段,你可以在stackoverflow和其他任何地方查找绑定、属性和文本字段。忘记那些选项卡吧,您只需要将每个TextField的text属性绑定到文本值的属性。这些属性与常规类属性非常相似。我现在没有时间举个例子。。。当出现错误或问题时,请尝试并将其发布到此处。由于您没有对带有您刚刚创建的文本字段的选项卡执行任何操作,因此不会发生任何事情。替换字段中的值,即使是在带有@FXML注释的字段中,也不会对新值和/或旧值产生任何影响。您仍然需要将选项卡添加到选项卡窗格中。顺便说一句:小心NullPointerException:file.getPath;如果文件!=null{@deHaar我已经用属性类更新了代码。我可以在控制台中打印VendorHeader1的值,但是当我尝试设置TextField的值时,却没有这样做。
public class FXMLController {
    @FXML
    private Button inputXmlFileBtn;
    @FXML
    private TextField inputXmlName;
    @FXML
    private TabPane xmlData;
    @FXML
    private Tab vendorHeaderFb;
    @FXML
    private TextField VendorHeader1;
    Label label;

    public String inputXmlFileChooser() throws ParserConfigurationException,
            SAXException, IOException, JAXBException {
        FileChooser fileChooser = new FileChooser();
        // Set extension filter
        fileChooser.getExtensionFilters().addAll(
                new ExtensionFilter("XML files (*.xml)", "*.xml"));

        // Open Dialog
        File file = fileChooser.showOpenDialog(null);
        String xmlPath = "";
        xmlPath = file.getPath();

        // Set the path for inputXmlName text field
        if (file != null) {
            inputXmlName.setText(xmlPath);
        }

        //Unmarshall
        label = this.unmarshallXml();
        System.out.println(label.getVendorHeader1());
        FXMLProps fxmlProps = new FXMLProps();
        fxmlProps.setVendorHeader1(label.getVendorHeader1());
        System.out.println(fxmlProps.getVendorHeader1());
        VendorHeader1 = new TextField();
        VendorHeader1.setText(fxmlProps.getVendorHeader1());
        //vendorHeaderFb.setContent(vendorHeader1);
        //vendorHeader1.setText(label.getVendorHeader1());
        //vendorHeaderFb.setContent(vendorHeader1);


        return xmlPath;
    }
public class FXMLProps {
    private final SimpleStringProperty VendorHeader1 = new SimpleStringProperty(
            "");

    public FXMLProps() {
    }

    public FXMLProps(String VendorHeader1) {
        setVendorHeader1(VendorHeader1);
    }

    public String getVendorHeader1() {
        return VendorHeader1.get();
    }

    public void setVendorHeader1(String vH1) {
        VendorHeader1.set(vH1);
    }
}
public class FXMLProps {

    private final SimpleStringProperty vendorHeader = new SimpleStringProperty("");

    public FXMLProps() {}

    public FXMLProps(String vendorHeader) {
        setVendorHeader(vendorHeader);
    }

    public String getVendorHeader() {
        return VendorHeader1.get();
    }

    public void setVendorHeader(String vendorHeaderText) {
        vendorHeader.set(vendorHeaderText);
    }

    // this is needed for the Binding
    public final SimpleStringProperty vendorHeaderProperty() {
        return vendorHeader;
    }
}
// bind those two properties (TextField, SimpleStringProperty)
Bindings.bindBidirectional(vendorHeader1.textProperty(), fxmlProps.vendorHeaderProperty());