Я делаю небольшую игру Судоку с графическим интерфейсом и использовать MaskFormatter для JFormattedTextFields:Java - JFormattedTextField не позволяет ввод первой попытки
formatter = new MaskFormatter(s);
formatter.setValidCharacters("123456789");
Но моя проблема заключается в том, что, когда окно открывается, и я нажимаю в одно из этих полей невозможно ввести что-либо,
он работает только во второй попытке, а именно, когда я нажимаю на другое поле, а затем обратно на первое.
Похоже, что нужно сначала сбрасывать фокус, чтобы активировать?
Если какой-либо из моих кодов необходим, пожалуйста, дайте мне знать.
Вот как это выглядит
EDIT: Проблема здесь:
if (guessMatrix[i][j] == 0) {
tfM[j][i].setBackground(Color.yellow);
tfM[j][i].setText("");
Без SetText ("") он отлично работает.
'Если некоторые из моего кода необходимо, пожалуйста, дайте мне know' - Дать [SSCCE] (http://sscce.org/), который демонстрирует проблему. Скорее всего, когда вы создаете SSCCE, вы обнаружите проблему. Вам не нужно вызывать requestFocusInWindow(), так как фокус автоматически переходит к первому компоненту. – camickr
@camickr Вы были правы, я только что нашел проблему, я отредактирую свой пост –
См. Также этот [альтернативный] (http://stackoverflow.com/a/4151403/230513) подход. – trashgod