java - 在 JOptionPane 上设置 DocumentFilter

标签 java swing jtextfield joptionpane documentfilter

我正在使用:

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

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

最佳答案

访问 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());
}

关于java - 在 JOptionPane 上设置 DocumentFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814336/

相关文章:

java - 从 Java 调用 powershell

java - 将 int 迭代器传递给在 for 循环中定义的新 Runnable

java - java.lang.RuntimeException 的未知原因

java - 在 JPanel 中绘图时出现问题

java - 如何在 JTextField 中设置财务代码文档过滤器

java - 如何在 Vuforia SDK 中使用 jPCT?

java - 将 ActionListener() 添加到 Java 中的 JButton-Array : compilation error

java - SwingWorker 没有响应

java - 来自单独类的 JTextField

java - 将 JTextField 格式化为最多接受三位数字,但最多可以输入 1-3 位数字