gpt4 book ai didi

java - 在Java FX中将TextField输入限制为十六进制值

转载 作者:行者123 更新时间:2023-12-03 22:00:29 25 4
gpt4 key购买 nike

如何将用户的输入限制为仅十六进制值?
使用十进制表示法时,范围是从0到16383,但是我想让用户在TextField中键入一个十六进制数。因此,范围应从0x0000到0x3FFF。我已经通过SceneBuilder构建了我的GUI,因此我只需要一个函数来处理对用户输入的限制和转换。

编辑

这是我的版本:

startAddressField.textProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue.matches("^[0-9A-F]?")) {
startAddressField.setText(oldValue);
}
});

最佳答案

如下所示,将TextFormatterUnaryOperatorStringConverter<Integer>一起使用:

UnaryOperator<TextFormatter.Change> filter = change -> change.getControlNewText().matches("[0-3]?\\p{XDigit}{0,3}") ? change : null;

StringConverter<Integer> converter = new StringConverter<Integer>() {

@Override
public String toString(Integer object) {
return object == null ? "" : Integer.toHexString(object);
}

@Override
public Integer fromString(String string) {
return string == null || string.isEmpty() ? null : Integer.parseInt(string, 16);
}

};

TextFormatter<Integer> formatter = new TextFormatter<>(converter, null, filter);
textField.setTextFormatter(formatter);


可通过 TextFormatter.value属性获得转换后的值。仅在按Enter或 TextField失去焦点时才会更新。

关于java - 在Java FX中将TextField输入限制为十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51192896/

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