如果用户不在pagininaicial和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是在OK按下之后,所以不工作:(
答案 0 :(得分:3)
我会为此创建一个自定义的模态JDialog。您可以使用添加到文本组件的DocumentListener来启用和禁用对话框中的JButton。
修改强>
你说:
哼,就像它一样,可以创建一个KeyListenner到文本字段来检查输入的数字是否为数字???如果它的号码,使OK按钮可见,但我怎样才能访问按钮?它不是Jbutton
是 一个JButton,如果您按照我上面的建议制作自己的JDialog并且不使用JOptionPane。不,你几乎不应该在Swing应用程序中使用KeyListener。如果要验证输入,请使用JFormattedTextField或DocumentFilter或InputVerifier。
编辑2
你说:
嗯,嗯,明白,我会读一些关于创建一个模态Jdialog的东西,谢谢你:)这会像“Jframe”那样工作吗?所以我将添加组件,并有可能获得组件事件,属性等..
JDialog类似于JFrame,因为它是一个顶级窗口,就像JFrame一样,你将加载一个JPanel,它将显示它将显示的所有组件,然后将JPanel添加到JDialog的contentPane,{{1并将它设置为可见,但它与JFrame的不同之处在于它的构造函数不同。您需要传入父窗口(此处为主JFrame),String标题和Dialog.ModalityType,可能是APPLICATION_MODAL。就像JOptionPane一样,一旦你将它设置为可见,调用代码中的所有代码都会停止,并等待对话在恢复之前不再可见。
答案 1 :(得分:2)
阅读Preventing a Dialog From Closing上的Swing教程中的一节,了解一种方法。