是否可以从场景构建器本身中创建FXML属性绑定(disable="${myNode.disable}"
以将禁用属性与myNode
的禁用值绑定)?
我能完成它的唯一方法是手动编辑输出文件。这是一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.VBox?>
<VBox spacing="10.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children>
<TextField disable="${checkbox.selected}"/>
<CheckBox fx:id="checkbox" mnemonicParsing="false" text="Disable Field" />
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</VBox>
并加载:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
VBox parent = FXMLLoader.load(getClass().getResource("FxmlBindingTest.fxml"));
Scene scene = new Scene(parent);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当我将此文件加载回场景构建器时,该节点上有一个黄色警告图标:
真正有趣的是,如果我从场景构建器加载预览,则值不受约束。
“场景构建器”不会覆盖或删除任何更改上的绑定文本,除了对该属性本身的更改 - 正如预期的那样。