5

我正在研究数独求解器,我正在尝试限制用户可以输入单元格的数字数量以及只能输入数字,目前它还接受字母。目前它的工作方式如下:如果用户输入“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.

4

2 回答 2

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

您想使用 MaskFormat 插入:

MaskFormatter f = new MaskFormatter( "#" );
f.setValidCharacters("123456789");
于 2013-04-10T16:30:50.407 回答
0

您可以按照以下链接中的说明编写自己的格式化程序:

JTextField 限制字符量输入并仅接受数字

于 2013-04-10T17:35:33.997 回答