gpt4 book ai didi

properties - JavaFX:使用常量字符串前缀绑定(bind) StringProperty

转载 作者:行者123 更新时间:2023-12-04 01:42:31 26 4
gpt4 key购买 nike

我对 JavaFX 中的绑定(bind)功能有疑问。我想要的是绑定(bind) 2 个字符串属性。但是它们的值不应该相等。

让我举个例子:

我有一个 StringProperty,它代表我的应用程序中最后打开的项目。
该值类似于“C:\temp\myProject.prj”。
我想在我的窗口标题中显示这条路径。
很简单:stage.titleProperty().bind(lastprojectProperty());但我不想只显示项目路径,还要显示应用程序名称,
例如。:
MyApplication 2.2.4 - C:\temp\myProject.prj。

可以使用绑定(bind)并添加常量前缀字符串吗?还是我使用了 ChangeListerner?

ChangeListener 的解决方案有初始值的问题......

    final StringProperty path = new SimpleStringProperty("untitled");
final StringProperty title = new SimpleStringProperty("App 2.0.0");

path.addListener(new ChangeListener<String>()
{
@Override
public void changed(ObservableValue<? extends String> ov, String t, String newValue)
{
title.setValue("App 2.0.0 - " + newValue);
}
});

// My title shows "App 2.0.0" since there is now change event throws until now...
// Of course I could call path.setValue("untitled");
// And above path = new SimpleStringProperty("");
System.out.println(title.getValue());

// Now the title is correct: "App 2.0.0 - C:\temp\myProject.prj"
path.setValue("C:\\temp\\myProject.prj");
System.out.println(title.getValue());

最佳答案

如果你做这样的事情

StringProperty prop = new SimpleStringProperty();
StringProperty other = new SimpleStringProperty();

prop.bind(Bindings.concat("your prefix").concat(other));

您的属性将与您想要的前缀绑定(bind)

关于properties - JavaFX:使用常量字符串前缀绑定(bind) StringProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293250/

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