簡體   English   中英

DocumentFilter只允許數字和句點(。)進入JTextField?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM