我有一个绑定到两个属性的标签。第一个值(DeletedFileCountProperty)是一个简单的int,无需格式化。但是,如何将第二个属性(SimpleLongProperty)格式化为人类可读的filesize值?
示例:deletedFilesSize
的值为1000000。标签应显示“1MB”。
我可以调用绑定中的man ReadableByteCount
函数来让此函数格式化值吗?
迄今为止我的代码:
public class MainController implements Initializable {
private final SimpleIntegerProperty deletedFilesCount = new SimpleIntegerProperty();
private final SimpleLongProperty deletedFilesSize = new SimpleLongProperty();
@FXML
Label deletedFilesLabel;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
deletedFilesLabel.textProperty().bind(Bindings.format("Deleted files: %d (%d)", deletedFilesCountProperty(), deletedFilesSizeProperty()));
}
/**
* formats a long number to a human readable file size value
* returns something like: 2MB or 4GB and so on instead of very long Long values.
*/
public static String humanReadableByteCount(long bytes, boolean si) {
int unit = si ? 1000 : 1024;
if (bytes < unit)
return bytes + " B";
int exp = (int) (Math.log(bytes) / Math.log(unit));
String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (si ? "" : "i");
return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
}
}
谢谢
您可以这样做,例如:
fileSizeLabel.bind(Bindings.createStringBinding(
() -> humanReadableByteCount(deletedFilesSize.get(), false),
deletedFilesSize
));
或
deletedFilesLabel.textProperty().bind(Bindings.createStringBinding(
() -> String.format(
"Deleted files: %d (%s)",
deletedFilesCountProperty().get(),
humanReadableByteCount(deletedFilesSizeProperty().get(), false)
),
deletedFilesCountProperty(),
deletedFilesSizeProperty()
));
我在JavaFX应用程序中使用MVP。 资源: 控制器: 看法 在我的InfoStageView中,只需初始化我的标签和样式我的视图。 如何将我的超链接绑定到我的标签。我尝试了一些方法,但没有成功。我的StringProperty不可点击,但很容易绑定。 我的目标:我想打开带有链接的浏览器。
我有一个文本字段,用户在其中输入工资。TF有一个基于默认语言环境的TextFormatter。文本字段旁边有一个标签,在这个标签中,我想显示格式为货币的文本字段文本,为此,我使用以下代码: 如您所见,标签文本没有格式化为数字-因为没有应用格式化程序-。所以我的问题是如何使标签的文本格式化并同时与TextField TextProperty绑定。 有人可能会问:为什么不使用货币格式化程序而不是数字格
我是FX新手,对Java不太陌生,所以请耐心等待!我有一个简单的应用程序,它使用一个由ObservableList支持的JavaFX TableView。 当我第一次启动应用程序时,我生成了另一个Thread(从Application的start方法)来监听对日志文件的更改并将另一个元素添加到观察列表中,以便在TableView中立即可见该行。我认为在窗口中有一个包含当前大小的Label会很有好处
问题内容: 如何在Java中将字节大小转换为人类可读的格式? 像1024应该变成“ 1 Kb”,而1024 * 1024应该变成“ 1 Mb”。 我有点讨厌为每个项目编写此实用程序方法。在Apache Commons中有一个静态方法吗? 问题答案: 有趣的事实:此处发布的原始代码段是有史以来复制最多的Java代码段,并且存在缺陷。它是固定的,但变得混乱。 本文全文:有史以来复制最多的Stack O
问题内容: 给定文件大小(以字节为单位),我想使用 IEC(二进制)前缀 将其格式化为 3个 有效数字, 并带有结尾的零,例如1883954变为1.80M。 bash不支持浮点算术,因此我改用awk。问题是我不怎么保持尾随零。当前解决方案: (文件不是那么大,所以我不必考虑更大的单位。) 编辑:这还有另一个问题。请参阅下面的AdrianFrühwirth的评论。 问题答案: GNU Coreuti
我想绑定JavaFX与值。 我试过了,例如。 或 但我总是得到NullPointerException。 我怎么才能修好它?