Как использовать JFormattedTextField, позволяющий использовать только буквы и цифры - PullRequest
2 голосов
/ 20 ноября 2011

У меня есть этот код, и я не могу получить MaskFormatter право
maskformatter

MaskFormatter formatter = null;
  try {
    formatter = new MaskFormatter("HHHHHHH");
  } catch (ParseException e) {
    e.printStackTrace();
  }

txtTroll = new JFormattedTextField(formatter);

Мне нужен любой шестнадцатеричный символ (0-9, az или AZ) и "H "должен
дать мне только (0-9, az или AZ), но я ошибаюсь.

Когда я набираю текст, набираются только заглавные буквы, и медленно
, и когда я нажимаюот txtTroll все буквы исчезают

Ответы [ 3 ]

6 голосов
/ 21 ноября 2011

вы можете использовать другое решение, которое я предпочитаю

написать свой класс документа и переписать его insertString методом, используя regex expr

пример:

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.text.AttributeSet;
import javax.swing.text.PlainDocument;

/**
*
* @author cpp-qt
*/
public class HexDocument extends PlainDocument {

private String text = "";

@Override
public void insertString(int offset, String txt, AttributeSet a) {
    try {
        text = getText(0, getLength());
        if ((text + txt).matches("[0-9a-fA-F]{0,7}")) {
            super.insertString(offset, txt, a);
        }
     } catch (Exception ex) {
        Logger.getLogger(HexDocument.class.getName()).log(Level.SEVERE, null, ex);
     }

    }
}

1010 * тогда *

установить его как документ вашего textField, как это this.jTextField1.setDocument(new HexDocument());

я думаю, что это лучше, чем использовать jFormattedTextField

2 голосов
/ 21 ноября 2011

Есть некоторые проблемы в вашем предположении, убедитесь, что вам нужно, если вам нужны буквы и цифры, HEX это не , что вам нужно,

"H" должен давать только мне (0-9, a-z или A-Z), но я ошибаюсь.

Это неверное предположение, "H" должен давать вам любой шестнадцатеричный символ (0-9, a-f или A-F) .

См. Javadoc: MaskFormatter

Также я бы посоветовал вам взглянуть на: Реализация фильтра документов

0 голосов
/ 31 июля 2014

ЧЧЧХ сделает вывод шестнадцатеричным.Использовать AAAAAAA

...