相关疑难解决方法(0)

77
推荐指数
10
解决办法
12万
查看次数

从JavaFX对话框中的数字文本字段中转义

我有一个带有几个UI元素的自定义对话框。一些TextField用于数字输入。当按下逃逸键并且焦点位于任何数字文本字段上时,此对话框不会关闭。当焦点位于没有此自定义TextFormatter的其他TextField上时,该对话框可以正常关闭。

这是简化的代码:

package application;

import java.text.DecimalFormat;
import java.text.ParsePosition;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            TextField name = new TextField();
            HBox hb1 = new HBox();
            hb1.getChildren().addAll(new Label("Name: "), name);

            TextField id = new TextField();
            id.setTextFormatter(getNumberFormatter()); // numbers only
            HBox hb2 = new HBox();
            hb2.getChildren().addAll(new Label("ID: "), id);

            VBox vbox = new …
Run Code Online (Sandbox Code Playgroud)

javafx

15
推荐指数
1
解决办法
361
查看次数

JavaFX 8中带有TextFormatter和/或UnaryOperator的整数的数字TextField

我试图通过使用JavaFX 8的TextFormatter为整数创建一个数字TextField.

使用UnaryOperator解决方案:

UnaryOperator<Change> integerFilter = change -> {
    String input = change.getText();
    if (input.matches("[0-9]*")) { 
        return change;
    }
    return null;
};

myNumericField.setTextFormatter(new TextFormatter<String>(integerFilter));
Run Code Online (Sandbox Code Playgroud)

使用IntegerStringConverter的解决方案:

myNumericField.setTextFormatter(new TextFormatter<>(new IntegerStringConverter()));  
Run Code Online (Sandbox Code Playgroud)

两种解决方案都有自己的问题.使用UnaryOperator,我只能输入0到9之间的数字,但我还需要输入负值,如"-512",其中只允许在第一个位置使用符号.此外,我不希望像"00016"这样的数字仍然可能.

IntegerStringConverter方法效果更好:不接受每个无效的数字,如"-16-123",像"0123"这样的数字转换为"123".但转换仅在文本提交时(通过按Enter键)或TextField失去焦点时发生.

有没有办法在每次更新TextField的值时使用IntegerStringConverter强制转换第二个方法?

java javafx numeric formatter textfield

10
推荐指数
1
解决办法
2万
查看次数

带有数字和字母的字符串,以加倍javafx

嗨,我试图从文本字段中读取数字,显示价格,例如£3.00,并将价格的值转换为双倍.有办法吗?

Double value;
value = Double.parseDouble(textField.getText()); 
Run Code Online (Sandbox Code Playgroud)

但由于英镑符号,它不会让我这样做.有没有办法剥去英镑符号然后读取数字.

谢谢

javafx textfield

3
推荐指数
1
解决办法
6958
查看次数

标签 统计

javafx ×4

textfield ×3

filter ×1

formatter ×1

input ×1

java ×1

numeric ×1