2
我有三個JavaFX TextField,一個用於名稱,一個用於域,最後用於FQDN(完全限定域名)。將JavaFX TextField綁定到來自兩個SimpleStringValues的String值
我有一個包含名稱,域和FQDN的SimpleStringProperties的類。我無法爲FQDN創建綁定,該綁定採用在SimpleStringProperty名稱和SimpleStringProperty域中設置的值並創建SimpleStringProperty name @ domain。我試圖通過組合名稱和域來添加@然後添加@但我無法將它返回到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);
}
}
感謝您的幫助,我一直在挖掘這幾天試圖弄清楚這一點! – n0manarmy