[英]DocumentFilter allowing only numbers and period (.) into JTextField?
\\這是JTextField的創建:
hourlyWageInput = new JTextField("7.25");
DocumentFilter filter = new UppercaseDocumentFilter();
((AbstractDocument) hourlyWageInput.getDocument()).setDocumentFilter(filter);
hourlyWageInput.setHorizontalAlignment(JTextField.CENTER);
add(hourlyWageInput);
這是我的DocumentFilter:
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;
public class UppercaseDocumentFilter extends DocumentFilter {
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
String text, javax.swing.text.AttributeSet attr)
throws BadLocationException {
fb.insertString(offset, text.replaceAll("\\D", ""), attr);
}
}
這會自動刪除JTextField中的所有字母和字符。
但是,我想知道是否有人知道所有命令類似於“\\ D”的地方。 我花了一段時間才找到正確的信息。
此外,我現在的代碼也阻止了。 當我正在與雙打合作時,我需要的類型。 有任何想法嗎?
謝謝! 令人驚訝的是,我今天學到了多少。 我一直在編碼13個小時。
replaceAll
函數接受正則表達式。 您可以在線學習許多教程中的正則表達式(請參閱@Hovercraft Full Of Eels評論)或直接從Java API中學習: http ://docs.oracle.com/javase/6/docs/api/java/util/ 正則表達式/ Pattern.html
基本上,您可以將任何正則表達式構造(在上面的鏈接中列出)組合在一起以形成正則表達式。 例如,如果你想確保只有0-9和。 允許,你可以使用:
text.replaceAll("[^0-9.]", "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.