gpt4 book ai didi

java - 将 JavaFX TextField 绑定(bind)到来自两个 SimpleStringValues 的字符串值

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:11 24 4
gpt4 key购买 nike

我有三个 JavaFX TextField,一个用于名称,一个用于域,最后一个用于 FQDN(完全限定域名)。

我有一个包含名称、域和 FQDN 的 SimpleStringProperties 的类。我无法为采用 SimpleStringProperty 名称和 SimpleStringProperty 域中设置的值并创建 SimpleStringProperty name@domain 的 FQDN 创建绑定(bind)。我试图通过组合名称和域并添加 @ 来构建字符串,但是我无法将它返回到 SimpleStringProperty 以发送到 FQDN 的 GUI。

我提供了一个粗略的例子来说明我所做的事情。我有 GUI 和许多其他组件在工作,但我无法让 FQDN 正确报告。

我之前在 Java Swing 中通过添加一个监听鼠标移动然后更新字段的 ActionListener 来完成此操作。我正在努力改进这一点。

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;
}

public class GUI {
TextField name = new TextField();
TextField domain = new TextField();
TextField FQDN = new TextField();

name.textProperty().addListener(new NameChange());
domain.textProperty().addListener(new DomainChange());
FQDN.textProperty().bind(Data.getFQDN());
}

public class NameChange implements ChangeListener<String> {

@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue,
String newValue) {
Data.setName(newValue);
}

public class DomainChange implements ChangeListener<String> {

@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue,
String newValue) {
Data.setDomain(newValue);
}

最佳答案

真的不明白为什么要将 Data 类中的所有内容设为静态,但是:

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;
}
}

关于java - 将 JavaFX TextField 绑定(bind)到来自两个 SimpleStringValues 的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com