0

如果用户不在 paginainicial 和 paginafinal textFields 中键入数字,如何使 OK/X 按钮无法单击?

对话

           final JTextField paginainicial = new JTextField();
           final JTextField paginafinal = new JTextField();
           Object[] message = {
                "Número da Primeira Folha: ", paginainicial,
                "Número Última Folha: ", paginafinal,
                "Pedido de: " + connection.getInetAddress().getHostName(),


            };
           Object[] options = {"OK"};

           int option = JOptionPane.showOptionDialog(null,
                          message,"Dados da Certidão",
                          JOptionPane.PLAIN_MESSAGE,
                          JOptionPane.QUESTION_MESSAGE,
                          null,
                          options,
                          options[0]);








      //  int option = JOptionPane.showConfirmDialog(null, message, "Dados da Certidão", JOptionPane.OK_CANCEL_OPTION);
        ocupado = "1";

        if (option == JOptionPane.OK_OPTION) {
            String primeirafolha = paginainicial.getText();
            String ultimafolha = paginafinal.getText();
            metodos metodosBD = new metodos();
            metodosBD.atualizafolha(primeirafolha, ultimafolha, caminhodoarquivo);
            System.out.println("Dados inseridos.");
            ocupado = "0";
            JOptionPane.showMessageDialog(null, "Certidão Finalizada");
        }else {
            metodos metodosBD = new metodos();
            metodosBD.removedadosBD(caminhodoarquivo);
            File certfile = new File(caminhodoarquivo);
            certfile.delete();
            System.out.println("Certidão Cancelada.");}

我尝试了 if 文本,但当然 if 是在 OK 按下之后,所以不要工作:(

4

2 回答 2

3

我会为此创建一个定制的模态 JDialog。您可以使用添加到文本组件中的 DocumentListener 来启用和禁用对话框上的 JButton。


编辑
你状态:

嗯,以它的方式,可以为文本字段创建一个 KeyListenner 以检查键入的是否是数字???如果它的数字,使确定按钮可见,但我怎样才能访问按钮?它不是 Jbutton

如果您按照我上面的建议制作自己的 JDialog 并且不使用 JOptionPane,那么它就是一个 JButton。不,您几乎不应该在 Swing 应用程序中使用 KeyListener。如果要验证输入,请使用 JFormattedTextField 或 DocumentFilter 或 InputVerifier。


编辑 2
你说:

嗯,明白了,我会读一些有关创建模态 Jdialog 的内容,谢谢 :) 这将像“Jframe”一样工作,不是吗?所以 ii 将向它添加组件,并且可以获取组件事件、属性等。

JDialog 与 JFrame 类似,因为它是一个顶级窗口,并且与 JFrame 一样,您将加载一个 JPanel 及其将显示的所有组件,然后将 JPanel 添加到 JDialog 的 contentPane 中,pack()并将其设置为可见,但它与 JFrame 的不同之处在于它的构造函数不同。您将需要传入父窗口(这里是主 JFrame)、一个字符串标题和一个 Dialog.ModalityType,可能是 APPLICATION_MODAL。与 JOptionPane 一样,一旦将其设置为可见,调用代码中的所有代码都会暂停并等待对话框在恢复之前不再可见。

于 2013-10-08T21:03:05.967 回答
2

阅读 Swing 教程中关于防止对话框关闭的部分以了解一种方法。

于 2013-10-08T23:51:20.040 回答