2013-02-11 49 views
1

我使用:設置的DocumentFilter上的JOptionPane

String s = JOptionPane.showInputDialog(...); 

得到響應從用戶到一個問題,備用;該對話框被設置爲顯示響應的文本字段。我想限制在字母數字和'_'的響應中允許的字符。是否可以在文本字段上安裝DocumentFilter,而無需從頭開始實施我自己的自定義對話框?

+0

可能重複:http://stackoverflow.com/questions/4684914/filter-the-users-keyboard-input-into-jtextfield-swing – 2013-02-11 14:49:14

回答

3

訪問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()); 
} 
+0

我不知道關於隱藏,因爲我很確定它在文檔中,大多數人似乎錯過了它;)... + 1 – MadProgrammer 2013-02-11 19:58:15