【问题标题】:Set DocumentFilter on JOptionPane在 JOptionPane 上设置 DocumentFilter
【发布时间】:2013-01-26 16:25:21
【问题描述】:

我正在使用:

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

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

【问题讨论】:

标签: java swing jtextfield joptionpane documentfilter


【解决方案1】:

理论上可以访问 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 了解不同的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多