0
我想要一個JTextField
其中只能輸入數字(整數和小數),而且只能輸入12345和0以下的數字。我該怎麼做?我有什麼權利現在:JTextField上的最大值
JTextField tf = new JTextField();
final PlainDocument doc = new PlainDocument();
doc.setDocumentFilter(new DocumentFilter() {
@Override
public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
String s = doc.getText(0, offset) + string + doc.getText(offset, doc.getLength() - offset);
try {
if (Double.parseDouble(s) > 12345) {
fb.replace(0, 5, "12345", attr);
}
} catch (NumberFormatException e) {
fb.insertString(offset, string.replaceAll("\\D++", ""), attr);
}
}
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
String s = (doc.getText(0, offset) + text + doc.getText(offset, doc.getLength() - offset)).trim();
try {
if (Double.parseDouble(s) > 12345) {
fb.replace(0, 5, "12345", attrs);
}
} catch (NumberFormatException e) {
fb.insertString(offset, text.replaceAll("\\D++", ""), attrs);
}
}
});
tf.setDocument(doc);
(這是加入到JFrame
窗口在BorderLayout.CENTER
,有沒有別的吧)
但它不工作(我不能鍵入任何東西)。我究竟做錯了什麼?
注:我寧願使用沿着上述辦法的東西線(使用Document
S),而不是有可能的話訴諸類似JFomattedTextField
。
請考慮將「JSpinner」與['SpinnerNumberModel'](https://docs.oracle.com/javase/8/docs/api/javax/swing/SpinnerNumberModel.html)一起使用。 – 2015-02-07 23:58:11