限制数字输入JTextField

时间:2013-04-10 16:12:56

标签: java swing limit jtextfield

我正在使用数独求解器,我正在尝试限制用户可以进入单元格的数字的数量以及仅限能够输入数字,目前它也接受字母。它的工作原理如下:如果用户输入“11125455876”,它将只使用输入的最后一个数字(在本例中为“6”)。我想将用户可以输入单个单元格的数量限制为1,并且只接受数字 1-9 。我不确定我该怎么做。所以也许它只会覆盖以前的数字或者其他东西,如果我按一个字母键作为“a”就不会发生任何事情。

这是我的代码:

public PanelGUI(int size) {

    super(size);
    NumberFormat f = NumberFormat.getInstance();
    f.setMaximumIntegerDigits(1);
    f.setMinimumIntegerDigits(0);
    f.setGroupingUsed(false);
    cells = new JTextField[size][size];
    panel.setLayout(new GridLayout(size, size));
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            cells[i][j] = new JFormattedTextField(f);
            cells[i][j].setEditable(true);
            cells[i][j].setFont(boldFont);
            cells[i][j].setBorder(BorderFactory.createMatteBorder(1, 1, 1,
                    1, Color.white));
            cells[i][j].setHorizontalAlignment(JTextField.CENTER);
            panel.add(cells[i][j]);
        }
    }
}

如您所见,我目前正在使用number format

2 个答案:

答案 0 :(得分:3)

NumberFormat f = NumberFormat.getInstance();
f.setMaximumIntegerDigits(1);
f.setMinimumIntegerDigits(0);
f.setGroupingUsed(false);

您想使用MaskFormat instread:

MaskFormatter f = new MaskFormatter( "#" );
f.setValidCharacters("123456789");

答案 1 :(得分:0)

您可以编写自己的格式化程序,如下面的链接所示:

JTextField limiting character amount input and accepting numeric only