\下面是JTextField的創作:DocumentFilter只允許將數字和句點(。)轉換爲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個小時。
關於正則表達式的Google教程。一個出發點:[Oracle正則表達式教程](http://docs.oracle.com/javase/tutorial/essential/regex/)。我的最愛:[正則表達式教程](http://www.regular-expressions.info/tutorial.html)。從一開始就開始,因爲它是非常強烈的東西。 – 2012-08-07 03:09:07
這是你在那裏的一些時髦的代碼。通常你應該調用'FilterBypass'中的匹配方法,並且你可能也想重載'insertString'。 – 2012-08-07 04:52:10
@David Tunnell非常感謝這個話題 – Abdul 2014-03-17 22:23:25