سلام دوستان
کسی میدونه محدود کردن تکست باکس به وارد کردن عدد در بازه خاص توی اکلیپس چطوریه؟
لطفا جواب بدین اگه میدونین خیلی ممنونم
Printable View
سلام دوستان
کسی میدونه محدود کردن تکست باکس به وارد کردن عدد در بازه خاص توی اکلیپس چطوریه؟
لطفا جواب بدین اگه میدونین خیلی ممنونم
این نمونه کدی که فقط عدد تا سقف 500 قبول میکنه (عدد منفی هم قبول میکنه).
با DocumentFilter نوشته شده و بر حسب ویژگی مورد نظرتون کافیه تابع valid که نوشتم رو تغییر بدید
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.DocumentFilter;
public class Main extends JFrame {
public Main() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textFieldOne = new JTextField();
Document textDocOne = textFieldOne.getDocument();
DocumentFilter filterOne = new CheckRange();
((AbstractDocument) textDocOne).setDocumentFilter(filterOne);
add(textFieldOne);
setSize(300, 75);
}
public static void main(String[] args) {
Main window = new Main();
window.setVisible(true);
}
private class CheckRange extends DocumentFilter {
int RANGE_MAX = 500;
@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String text,
AttributeSet attr) throws BadLocationException {
if (valid(fb, offset, WIDTH, text)) {
super.insertString(fb, offset, text, attr);
}
}
@Override
public void remove(DocumentFilter.FilterBypass fb, int offset, int length)
throws BadLocationException {
super.remove(fb, offset, length);
}
@Override
public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text,
AttributeSet attrs) throws BadLocationException {
if (valid(fb, offset, length, text)) {
super.replace(fb, offset, length, text, attrs);
}
}
//Validate
boolean valid(FilterBypass fb, int offset, int length, String text) throws BadLocationException{
boolean valid = false;
text = text.trim();
String newStr = fb.getDocument().getText(0, fb.getDocument().getLength()) + text;
try {
if (newStr.length() == 1 && newStr.equals("-")) {
valid = true;
} else if (Integer.valueOf(newStr) <= RANGE_MAX) {
valid = true;
}
} catch (NumberFormatException ex) {
}finally{
return valid;
}
}
}
}