私の質問はこれの逆です: JOptionPane showInputDialog に [OK] ボタンのみを表示する方法はありますか ([キャンセル] ボタンは表示されません)。
その解決策の 1 つは (私が正しく読んだ場合)、任意の JPanel (その場合はラベル) を追加することでした。私の問題は、メッセージ ウィンドウに JComboBox オブジェクトが必要であり、(Coffee_Table の問題を解決したのと同じ方法で) JComboBox を使用するとキャンセル ボタンが削除されているように見えることです。YES_NO_CANCEL_OPTION を OK_CANCEL_OPTION または QUESTION_MESSAGE に置き換えても問題ありません。
私はまだ JOptionPane ファミリについて学習する無意識のコピー段階にあるので、解決策は明らかだと思いますが、無意識にコピーする具体的な例を見たことがないため、わかりません。(これは、キャンセル ボタンを追加する方法を習得したら、ユーザーがボタンを押したかどうかにアクセスする方法に取り組む必要があることも意味します。答えたくなければ答えなくていいです。)
public static void main(String[] args) {
int numCh1 = 1;
String[] moves = {"rock","paper","scissors"};
JComboBox<?> optionList = new JComboBox<Object>(moves);
JOptionPane.showMessageDialog(
null,
optionList,
"Player One: Choose a Move",
JOptionPane.YES_NO_CANCEL_OPTION
);
numCh1 = optionList.getSelectedIndex();
System.out.println(moves[numCh1]);
}
注: 私の実際のプロジェクトはrps101をシミュレートすることであるため、コンボ ボックスは (たとえば 3 つのボタンとは対照的に) 交渉不可能です。100 のすべての動き (またはこの質問に関係のないもの) を見る必要はないと思いました。