Мне кажется, я понимаю твою проблему.Что вам нужно сделать, это сделать объект ButtonGroup полем частного класса , а затем дать вашему классу открытый метод, скажем что-то вроде ...
public int getSelection() {
ButtonModel btnModel = bg.getSelection();
if (bg == null) {
// TODO: throw an exception -- no radio button has been selected
} else {
return Integer.parseInt(btnModel.getActionCommand());
}
}
Затем в actionlistener вашей кнопки отправкиуведомите все стороны о том, что выбор сделан, и что они должны вызвать метод getSelection()
для этого объекта, чтобы выяснить, что это за выбор.
Редактировать
Ах, теперь я вижу, что вы пытаетесь сделать - вы пытаетесь создать диалог с вопросом.Мое предложение заключается в том, что вы действительно делаете это, создаете диалог , а не JFrame, и фактически делаете его модальным диалогом, чтобы ваш метод ожидалчтобы пользователь отвечал, прежде чем двигаться дальше, и чтобы после завершения метода ButtonGroup фактически содержала правильную информацию.Самый простой способ сделать это - использовать JOptionPane, которые являются очень гибкими критериями, и использовать тот, который содержит JPanel, который содержит сетку ваших JRadioButtons.Затем выясните, что пользователь выбрал после , которую возвращает JOptionPane.Здесь статический метод может работать нормально, так как вы не меняете состояние объекта.Например:
public static String myQuestion(String question, String[] answers) {
JPanel panel = new JPanel(new GridLayout(0, 1));
final ButtonGroup btnGroup = new ButtonGroup();
for (String answer : answers) {
JRadioButton radioBtn = new JRadioButton(answer);
radioBtn.setActionCommand(answer);
btnGroup.add(radioBtn);
panel.add(radioBtn);
}
String[] options = { "Submit", "Cancel" };
String initialValue = "Submit";
int optionResult = JOptionPane.showOptionDialog(null, panel, question,
JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
options, initialValue);
// *** code will pause here and wait for the user to handle the modal dialog
if (optionResult != 0) {
return ""; // did not select "Submit"
} else if (optionResult == 0) {
ButtonModel btnModel = btnGroup.getSelection();
if (btnModel == null) {
return ""; // error! nothing selected
} else {
return btnModel.getActionCommand();
}
}
return "";
}
public static void main(String[] args) {
String question = "Where is Ulysses S. Grant buried?";
String[] answers = { "In my back yard", "At the white house",
"red my lord! No, blue!", "In Grant's tomb", "Who the hell is Ulysses S. Grant?" };
String selectedString = myQuestion(question, answers);
System.out.println("Answer selected: " + selectedString);
}