2013-10-08 93 views
0

如何让用户不要在paginainicial和paginafinal textFields中输入数字时,无法点击OK/X按钮?JoptionPane,不允许空文本

对话框

  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.");} 

如果文本我tryed,但当然,如果是OK按下后,所以不工作:(

+0

你可以看看[这个例子](http://stackoverflow.com/questions/14334931/disable-ok-button-on-joptionpane-dialog-until-user-gives-an-input/14335083# 14335083)和[这个例子](http://stackoverflow.com/questions/14591089/joptionpane-passing-custom-buttons/14591165#14591165),这是第一个 – MadProgrammer

回答

3

我想创建一个定制模式的JDialog这一点。你可以使用添加到您的文本组件DocumentListeners的对话框启用和禁用这些Jbutton。


编辑
幽州:

hummm,它的方式是,可以在创建KeyListenner到文本框,检查如果输入的是数字???如果它的号码,确定按钮可见,但我怎么可以访问按钮?它不是一个JButton

一个JButton,如果你按照我上面的建议,使自己的JDialog,不使用的JOptionPane。不,你应该几乎从不使用Swing应用程序的KeyListener。如果要验证输入,请使用JFormattedTextField或DocumentFilter或InputVerifier。


编辑2
幽州:

hummm,明白了,我会读一些有关创建一个模式的JDialog,thannk你:)这会像 “的JFrame” 是不是?所以ii将添加组件,并将有可能获得组件事件,属性等。

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

+0

hummm的扩展,以它的方式,可以创建一个KeyListenner到文本框来检查输入的数字是否是?如果它的号码,确定按钮可见,但我怎么可以访问按钮?它不是Jbutton:| – user2582318

+0

@ user2582318:请参阅编辑以回答。 –

+0

嗡嗡声,理解,我会读一些关于创建一个模式Jdialog,thannk你:)这将工作像“Jframe”不是吗?所以我会将组件添加到它并将可能获得组件事件,属性等。 – user2582318