我使用:設置的DocumentFilter上的JOptionPane
String s = JOptionPane.showInputDialog(...);
得到響應從用戶到一個問題,備用;該對話框被設置爲顯示響應的文本字段。我想限制在字母數字和'_'的響應中允許的字符。是否可以在文本字段上安裝DocumentFilter,而無需從頭開始實施我自己的自定義對話框?
我使用:設置的DocumentFilter上的JOptionPane
String s = JOptionPane.showInputDialog(...);
得到響應從用戶到一個問題,備用;該對話框被設置爲顯示響應的文本字段。我想限制在字母數字和'_'的響應中允許的字符。是否可以在文本字段上安裝DocumentFilter,而無需從頭開始實施我自己的自定義對話框?
不確定如何直接向文本字段文檔添加DocumentFilter。
有關其他方法,請參見Stopping Automatic Dialog Closing。
訪問JOptionPane的自動創建文本字段在理論上是可行的,但它是恕我直言錯誤的方式。
以下是更好的解決方案: JOptionPane具有隱藏功能:它也接受Swing組件作爲消息。因此,您需要創建一個帶有標籤和文本字段的面板(使用您的DocumentFilter)並將其傳遞給確認對話框。確認後,您可以閱讀文本字段中的文本。
下面是示例:
JPanel p = new JPanel(new FlowLayout());
JTextField fld = new JTextField(10);
// set document filter for 'fld' here
p.add(new JLabel("Enter text: "));
p.add(fld);
int val = JOptionPane.showConfirmDialog(null, p, "Test", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null);
if (JOptionPane.OK_OPTION == val) {
System.out.println("Text: " + fld.getText());
}
我不知道關於隱藏,因爲我很確定它在文檔中,大多數人似乎錯過了它;)... + 1 – MadProgrammer 2013-02-11 19:58:15
可能重複:http://stackoverflow.com/questions/4684914/filter-the-users-keyboard-input-into-jtextfield-swing – 2013-02-11 14:49:14