在JOptionPane上设置DocumentFilter

时间:2013-02-11 14:40:57

标签: java swing jtextfield joptionpane documentfilter

我正在使用:

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

获取用户对问题的回复;对话框设置为显示响应的文本字段。我想将响应中允许的字符限制为字母数字和'_'。是否可以在文本字段中安装DocumentFilter而无需从头开始实现我自己的自定义对话框?

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:2)

不确定如何直接将DocumentFilter添加到文本字段文档中。

有关其他方法,请参阅Stopping Automatic Dialog Closing