Я хочу, чтобы мое jtextfield принимало только числовые значения от 0 до значения MAX
, указанного в приведенном ниже примере кода.
Допустим, для переменной MAX
установлено значение 8, как показано ниже. Затем я просто хочу, чтобы можно было ввести числовое значение от 0 до 8. В моем примере кода ниже вы можете ввести 88, 77, 66 и т. д., и это не должно быть возможно. Я понятия не имею, как я могу сделать так, чтобы он принимал значения только от 0 до MAX
.
import javax.swing.*;
import javax.swing.text.*;
public class DocumentDemo extends JFrame {
public static void main(String[] args) {
new DocumentDemo();
}
final int MAX = 8;
public DocumentDemo() {
this.setVisible(true);
JTextField textField = new JTextField();
((AbstractDocument)textField.getDocument()).setDocumentFilter(
new DocumentFilter() {
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
int len = text.length();
boolean isValidValue = true;
for(int i = 0; i < len; i++) {
if(!Character.isDigit(text.charAt(i))){
isValidValue = false;
}
}
if(isValidValue && Integer.parseInt(text) > MAX) {
isValidValue = false;
}
if(isValidValue && fb.getDocument().getText(0, fb.getDocument().getLength()).length() > String.valueOf(MAX).length()) {
isValidValue = false;
}
if(isValidValue) {
super.replace(fb, offset, length, text, attrs);
}
}
}
);
textField.setColumns(5);
this.add(textField);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
}
"I have no clue how I can make it so it only accepts values between 0 and MAX."
-- Фильтр документов будет работать. Ваше утверждение выше не помогает нам понять, где вы застряли. Пожалуйста, будьте конкретны в формулировке проблемы. Если вы выполните поиск на этом сайте по моему имени и DocumentFilter, вы найдете примеры того, как создаются эти ребята. - person Hovercraft Full Of Eels   schedule 24.06.2014test(...)
метод, соответствующий вашим критериям. Я уверен, что вы можете сделать это, если вы попробуете. - person Hovercraft Full Of Eels   schedule 24.06.2014