web-dev-qa-db-ja.com

JOptionPaneでキャンセルボタンを処理する方法

タイプJOptionPaneshowInputDialogを作成しました。それを開くと、2つのボタンが表示されます。 OK そして Cancel。押したときにアクションを処理したい Cancel ボタン、しかし私はそれに到達する方法がわかりません。どうすれば入手できますか?

11
Mazzy

例えば:

int n = JOptionPane.showConfirmDialog(
                            frame, "Would you like green eggs and ham?",
                            "An Inane Question",
                            JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {

} else if (n == JOptionPane.NO_OPTION) {

} else {

}

または、showOptionDialogを使用します。

Object[] options = {"Yes, please", "No way!"};
int n = JOptionPane.showOptionDialog(frame,
                "Would you like green eggs and ham?",
                "A Silly Question",
                JOptionPane.YES_NO_OPTION,
                JOptionPane.QUESTION_MESSAGE,
                null,
                options,
                options[0]);
if (n == JOptionPane.YES_OPTION) {

} else if (n == JOptionPane.NO_OPTION) {

} else {

}

詳細は ダイアログの作成方法 を参照してください。

編集:showInputDialog

String response = JOptionPane.showInputDialog(owner, "Input:", "");
if ((response != null) && (response.length() > 0)) {

}
23
tenorsax

ShowMessageDialogは2つのボタンを表示しないようにする必要があるため、コードまたはコードの解釈に問題があります。いずれにしても、ユーザーに選択肢を与えてその選択肢を検出したい場合は、showMessageDialogではなくshowConfirmDialogを使用せずに、intを返してテストし、JOptoinPane.OK_OPTIONかどうかを確認します。

これは古い質問です。私はJava初心者なので、より良い解決策があるかもしれませんが、同じことを知りたかったのですが、他の人を助けることができるかもしれません。応答はnullでした。

ユーザーが「キャンセル」をクリックすると、応答はnullになります。テキストを入力せずに「OK」をクリックすると、応答は空の文字列になります。

これは私のために働きました:

//inputdialog 
    JOptionPane inpOption = new JOptionPane();

    //Shows a inputdialog
    String strDialogResponse = inpOption.showInputDialog("Enter a number: "); 

    //if OK is pushed then (if not strDialogResponse is null)
    if (strDialogResponse != null){

        (Code to do something if the user Push OK)  

    }
    //If cancel button is pressed
    else{

        (Code to do something if the user Push Cancel)

    }
4
Kjell

あなたはこのようにすることができます:

String val = JOptionPane.showInputDialog("Value: ");
if(val == null){
  // nothing goes here if yo don't want any action when canceled, or
  // redirect it to a cancel page if needed
}else{
  //insert your code if ok pressed
  // JOptionPane return an String, as you was talking about int
  int value = Integer.ParseInt(val);
}
0
emendescv
package Joptionpane;

import javax.swing.JOptionPane;

public class Cancle_on_JOptionPane {

    public static void main(String[] args) {
        String s;
        int i;
        for (i=0;i<100;i++){
            s = JOptionPane.showInputDialog(null,"What is your favorite fruit ?");
            try {
                if (s.equals("")) {
                    JOptionPane.showMessageDialog(null," Enter your answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE);
                    i=2;
                } else {
                    JOptionPane.showMessageDialog(null," s = "+s," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE);
                    i=100;
                }
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null,"Cancle answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE);
                i=100;
            }
        }
    }
}
0
hamooda aburezk