将JavaFXTextField绑定到两个SimpleStringValue中的字符串值
我有三个JavaFX文本字段,一个用于名称,一个用于域,最后一个用于FQDN(完全限定的域名) 我有一个包含名称、域和FQDN的SimpleStringProperties的类。我无法为FQDN创建绑定,该绑定采用SimpleStringProperty名称和SimpleStringProperty域中设置的值并创建SimpleStringPropertyname@domain. 我试图通过组合名称和域并添加@来构建字符串,但是我无法将其返回到SimpleStringProperty以发送到FQDN的GUI 我已经包括了一个我所做的粗略的例子。我有GUI和许多其他组件在工作,但我无法正确报告FQDN 我之前在JavaSwing中添加了一个ActionListener来监听鼠标移动,然后更新字段。我正在努力改进这一点将JavaFXTextField绑定到两个SimpleStringValue中的字符串值,java,user-interface,javafx,textfield,java-8,Java,User Interface,Javafx,Textfield,Java 8,我有三个JavaFX文本字段,一个用于名称,一个用于域,最后一个用于FQDN(完全限定的域名) 我有一个包含名称、域和FQDN的SimpleStringProperties的类。我无法为FQDN创建绑定,该绑定采用SimpleStringProperty名称和SimpleStringProperty域中设置的值并创建SimpleStringPropertyname@domain. 我试图通过组合名称和域并添加@来构建字符串,但是我无法将其返回到SimpleStringProperty以发送到FQ
public class Data {
static SimpleStringProperty name = new SimpleStringProperty();
static SimpleStringProperty domain = new SimpleStringProperty();
static SimpleStringProperty FQDN = new SimpleStringProperty();
public static void setName(String string) {
name.set(string);
}
public static void setDomain(String string) {
domain.set(string);
}
public static ObservableStringValue getFQDN() {
FQDN.set(name.get() + "@" + domain.get());
return FQDN;
}
}
公共类GUI{
TextField name=新的TextField();
TextField domain=新的TextField();
TextField FQDN=新建TextField();
name.textProperty().addListener(新名称更改());
domain.textProperty().addListener(新域更改());
FQDN.textProperty().bind(Data.getFQDN());
}
公共类NameChange实现ChangeListener{
@凌驾
public void changed(observevableValue无法真正理解为什么要将数据
类中的所有内容都设置为静态,但是:
public class Data {
static StringProperty name = new SimpleStringProperty();
static StringProperty domain = new SimpleStringProperty();
static StringProperty FQDN = new SimpleStringProperty();
static {
FQDN.bind(Bindings.format("%s@%s", name, domain));
}
public static String setName(String string) {
name.set(string);
}
public static String setDomain(String string) {
domain.set(string);
}
public static ObservableStringValue getFQDN() {
return FQDN;
}
}
谢谢你的帮助,过去几天我一直在寻找答案!
public class DomainChange implements ChangeListener<String> {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue,
String newValue) {
Data.setDomain(newValue);
}
public class Data {
static StringProperty name = new SimpleStringProperty();
static StringProperty domain = new SimpleStringProperty();
static StringProperty FQDN = new SimpleStringProperty();
static {
FQDN.bind(Bindings.format("%s@%s", name, domain));
}
public static String setName(String string) {
name.set(string);
}
public static String setDomain(String string) {
domain.set(string);
}
public static ObservableStringValue getFQDN() {
return FQDN;
}
}