Вы не хотите форматировать значение, вы хотите отфильтровать содержимое. Используйте DocumentFilter
на равнине на JTextField
Start, взглянув на Implementing a DocumntFilter и Examples для получения более подробной информации ...
В качестве примера, «двоичный фильтр», который будет только принимать 0
и 1
public class BinaryDocumentFilter extends DocumentFilter {
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset,
String text, AttributeSet attr)
throws BadLocationException {
StringBuilder buffer = new StringBuilder(text.length());
for (int i = buffer.length() - 1; i >= 0; i--) {
char ch = buffer.charAt(i);
if (ch == '0' || ch == '1') {
buffer.append(ch);
}
}
super.insertString(fb, offset, buffer.toString(), attr);
}
@Override
public void replace(DocumentFilter.FilterBypass fb,
int offset, int length, String string, AttributeSet attr) throws BadLocationException {
if (length > 0) {
fb.remove(offset, length);
}
insertString(fb, offset, string, attr);
}
}
который может быть нанесен непосредственно на поле-х Document
:
JTextField binaryField = new JTextField(10);
((AbstractDocument)binaryField.getDocument()).setDocumentFilter(new BinaryDocumentFilter());
Можете ли вы поделиться кодом с тем, что вы пробовали до сих пор? – lenz
Я только что создал экземпляры и пробовал некоторые методы, но мне не удалось: D – Scriptim
ну, вот так: JFormattedTextField binaryText = new JFormattedTextField(); – Scriptim