0

ユーザーがテキストフィールドに「削除」という単語を入力してアクションを確認し、「削除」というラベルの付いたボタンをクリックする必要があるオブジェクトを削除するための確認ウィンドウを考え出そうとしています。さらに、標準の「キャンセル」ボタンもあります。

以下は私が欲しいものの基本的な考え方ですが、ブール値を適切に返す方法がわかりません:

public static boolean confirmDelete(String msg) {
    JPanel panel = new JPanel();
        JPanel sPanel1 = new JPanel();
            JPanel ssPanel1 = new JPanel();
                ssPanel1.setLayout(new BoxLayout(ssPanel1, BoxLayout.Y_AXIS));
                    JLabel lbl = new JLabel(msg);
                    confirm = new JTextField(10);
                ssPanel1.add(lbl);
                ssPanel1.add(confirm);
            JPanel ssPanel2 = new JPanel();
                ssPanel2.setLayout(new BoxLayout(ssPanel2, BoxLayout.Y_AXIS));
                    JButton ok = new JButton("Delete");
                        ok.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent arg0) {
                                if(confirm.getText().toLowerCase().equals("delete")) {
                                    //Set the returned value to true;
                                } else {
                                    alertMsg("Invalid input. Please try again.");
                                }
                            }
                        });
                    JButton cancel = new JButton("Cancel");
                        cancel.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(ActionEvent arg0) {
                                //Set the returned value to false;
                            }
                        });
                ssPanel2.add(ok);
                ssPanel2.add(cancel);
            sPanel1.add(ssPanel1);
            sPanel1.add(ssPanel2);
        panel.add(sPanel1);

    JFrame deleteFrm = new JFrame("Confirm Delete");
    deleteFrm.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

    //Add content to the window.
    deleteFrm.setContentPane(panel);

    //Display the window.
    deleteFrm.pack();

    deleteFrm.setVisible(true);
}

boolean deleteItem = ClassName.confirmDelete(msg);基本的には、行を使用してこのウィンドウを呼び出し、削除ステータスが適切に確認されたかどうかを示すブール値を返すようにしたいと考えています。コードサンプルに示されているようにブール値を返すようにこれを設定するにはどうすればよいですか (これは明らかに間違っているため、疑似コードのようなものです)。これは、前述のような単一回線の呼び出しでも可能ですか?

4

2 に答える 2

2

代わりに JOptionPane を使用してください。ユーザーの選択結果を取得してからロジック コードを決定する方が簡単です。たとえば、JOptionPane YES/No Options Confirm Dialog Box Issue -Java または Google 検索結果: JOPtionPane の例を参照してください。

于 2013-04-15T20:30:14.950 に答える
0

ここで私の質問に対する答えを見つけましたが、思ったよりもかなり簡単でした。その結果、独自のウィンドウの作成に関連するすべての作業を行うことなく、希望どおりのブール値を返す次のコードを思いつきました。

public static boolean confirmDelete(String msg) {
    String str = JOptionPane.showInputDialog(msg);
    if(str != null && str.toLowerCase().equals("delete")) return true;
    return false;
}

Elior の答えは、私が探していたものとはまったく異なりますが、正しい方向に私を向けてくれたので、+1 しました。JOptionPaneのメソッドをどのように見逃したのかはわかりませんshowInputDialog()が、基本的には探していたものです (単なる確認のはい/いいえではありません。データは機密性が高すぎて、これほど簡単なことはできません)。

編集: それ以外の場合はキャンセルstr != null &&時にスローされるように追加されました。nullPointerException

于 2013-04-15T21:59:25.467 に答える