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 を作成します。テキスト コンポーネントに追加された DocumentListeners を使用して、ダイアログの JButton を有効または無効にすることができます。


あなたの状態を編集
:

うーん、そのままでは、テキストフィールドに KeyListenner を作成して、入力されたものが数値かどうかを確認できますか??? その番号の場合、[OK] ボタンを表示しますが、どうすればボタンにアクセスできますか? Jボタンではありません

上記の私の提案に従い、独自の JDialog を作成し、JOptionPane を使用しない場合、それはJButton です。いいえ、Swing アプリケーションで KeyListener を使用することはほとんどありません。入力を検証する場合は、JFormattedTextField または DocumentFilter または InputVerifier を使用します。


編集2
あなたは次のように述べています:

うーん、理解してください、私はモーダルJdialogの作成について何かを読みます、ありがとう:)これは「Jframe」のように機能しますよね?そのため、ii はそれにコンポーネントを追加し、Components イベント、プロパティなどを取得できるようになります。

JDialog は、トップレベル ウィンドウであるという点で JFrame に似ています。JFrame のように、表示するすべてのコンポーネントを含む JPanel をロードし、JPanel を JDialog の contentPane に追加して、pack()可視に設定します。ただし、コンストラクターが異なるという点で JFrame とは異なります。親ウィンドウ (ここではメインの JFrame)、文字列のタイトル、および Dialog.ModalityType (おそらく APPLICATION_MODAL) を渡す必要があります。JOptionPane と同様に、可視に設定すると、呼び出し元のコードのすべてのコードが停止し、ダイアログが非表示になるまで待機してから再開します。

于 2013-10-08T21:03:05.967 に答える
2

1 つのアプローチについては、ダイアログが閉じるのを防ぐための Swing チュートリアルのセクションをお読みください。

于 2013-10-08T23:51:20.040 に答える