回答編集履歴

2

誤記訂正

2017/12/15 07:07

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- --
25
+ ---
26
26
 
27
27
  追記:質問コメントによりラジオボックスにしたい意図がわかりました。そういうことですと上記の回答にような方針でよいと思います。簡単な例を書いてみました。
28
28
 
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- String selection = getUserSelection(null,"Input", "choose one",
77
+ String selection = getUserSelection(null, "Input", "choose one",
78
78
 
79
79
  new String[] {"one", "two", "three"});
80
80
 

1

追記

2017/12/15 07:07

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -19,3 +19,67 @@
19
19
 
20
20
 
21
21
  使うメソッドは、キャンセルする必要がないならshowMessageDialog、OK/キャンセルを選択可能にするならshowConfirmDialogを用いればよいと思います。
22
+
23
+
24
+
25
+ --
26
+
27
+ 追記:質問コメントによりラジオボックスにしたい意図がわかりました。そういうことですと上記の回答にような方針でよいと思います。簡単な例を書いてみました。
28
+
29
+ ```java
30
+
31
+ static String getUserSelection(JComponent dialogOwner, String dialogTitle, String messageLabel, String[] possibleValues) {
32
+
33
+ ButtonGroup bg = new ButtonGroup();
34
+
35
+ Box box = Box.createVerticalBox();
36
+
37
+ box.add(new JLabel(messageLabel));
38
+
39
+ for (String value : possibleValues) {
40
+
41
+ JRadioButton button = new JRadioButton(value);
42
+
43
+ button.setActionCommand(value);
44
+
45
+ bg.add(button);
46
+
47
+ box.add(button);
48
+
49
+ }
50
+
51
+ bg.setSelected(bg.getElements().nextElement().getModel(), true);
52
+
53
+
54
+
55
+ int response = JOptionPane.showConfirmDialog(dialogOwner,
56
+
57
+ box, // message
58
+
59
+ dialogTitle, // title
60
+
61
+ JOptionPane.OK_CANCEL_OPTION,
62
+
63
+ JOptionPane.INFORMATION_MESSAGE);
64
+
65
+ boolean approved = response == JOptionPane.OK_OPTION;
66
+
67
+ return approved ? bg.getSelection().getActionCommand() : null;
68
+
69
+ }
70
+
71
+
72
+
73
+ ...
74
+
75
+
76
+
77
+ String selection = getUserSelection(null,"Input", "choose one",
78
+
79
+ new String[] {"one", "two", "three"});
80
+
81
+ System.out.println(selection);
82
+
83
+ ```
84
+
85
+ この例では「あり得る選択肢をStringの配列で与えユーザーの選択結果を返すメソッド」としています。初期選択アイテムは選択肢の先頭としており、OKを押したら選択されている項目の文字列、cancelならnullを返してますが初期選択肢を「なし」にしたり「OK,Cancel」ではなく「OK」のみするなど必要に応じて少しの変更で対応できると思います。