Обновление JOptionPane для изменения состояния компонента

есть метод в моем проекте GUI для отображения JOptionPane с несколькими компонентами на нем, 2 из этих компонентов ButtonGroups с 2 JRadioButtons в каждой, в первой группе по умолчанию выбрана первая кнопка, во второй группе по умолчанию выбрана вторая кнопка, во второй группе я хочу, чтобы первая кнопка была отключена до тех пор, пока не будет выбрана вторая кнопка в первой группе, т.е. если пользователь доволен выбором по умолчанию в BG1, то они могут 'сделать выбор в BG2, только если они делают второй выбор в BG1, они могут иметь другой вариант в BG2.

Возможно ли такое поведение при использовании JOptionPane?

Изучали руководства для JDialog, JOptionPane и другие исследования, но ни один из них не оказался полезным в этом случае. если бы кто-то мог дать мне немного указания на возможное решение, которое было бы фантастическим...

3 ответа

В операторе elective.addActionListener я назвал неправильную переменную, имел cp12 вместо cp6, разместил мой сокращенный код ниже, все хорошо, спасибо

public void displayAddSomething(ArrayList<string> items)
 {
// cut down version only showing the button panels
 // initialising the variables 
 JPanel buttPanel = new JPanel(new GridLayout(0, 1));
 JPanel pointPanel = new JPanel(new GridLayout(0, 1));
 JRadioButton core = new JRadioButton("Core Item: ", true);
 final JRadioButton elective = new JRadioButton("Elective Item: ");
 final JRadioButton cp6 = new JRadioButton("6 Points: ");
 JRadioButton cp12 = new JRadioButton("12 Points: ", true);
 ButtonGroup bg1 = new ButtonGroup();
 ButtonGroup bg2 = new ButtonGroup();
 // adding the buttons to buttPanel and the button group 1
 buttPanel.add(new JLabel("Select Course Type"));
 buttPanel.add(core);
 buttPanel.add(elective);
 buttPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
 bg1.add(core);
 bg1.add(elective);
 // add buttons pointPanel and bg2
 pointPanel.add(new JLabel("Select Credit Points"));
 pointPanel.add(cp6);
 pointPanel.add(cp12);
 pointPanel.setBorder(BorderFactory.createLineBorder(Color.GREEN, 2));
 bg2.add(cp6);
 bg2.add(cp12);
 cp6.setEnabled(false);
 // add action listener for each of bg1 buttons so if event
 // occurs the cp6 button will toggle between enabled and disabled.
 elective.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e)
 { 
 cp6.setEnabled(true);
 }});
 core.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e)
 {
 cp6.setEnabled(false);
 }});
 Object[] message = {buttPanel,pointPanel};
 int result = JOptionPane
 .showOptionDialog(
 this,
 message,
 "...some text...",
 JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE,
 null, new String[] { "Submit", "Cancel" }, "Default");
 if (result == JOptionPane.OK_OPTION)
 {
 // collecting all the input values in a string array to pass to
 // another class for processing by the model... 
 }
 else if (result == JOptionPane.NO_OPTION)
 {
 JOptionPane.showMessageDialog(this,
 "You Have Elected Not to do anything At This Time",
 "YOU HAVE COME THIS FAR AND YOU QUIT NOW....",
 JOptionPane.QUESTION_MESSAGE); 
 }
 }
</string>


Лучшая вещь для JDialog

Поскольку JOptionPane не поддерживает эту часть компонентов.


Я не думаю, что это возможно с JOption. но я думаю, что это возможно с помощью JDialog.

examble:

когда вы открываете диалог, вы можете использовать команду JFrame (здесь вы должны написать свое имя окна).enable(false)

вы могли бы получить его, чтобы закрыть кнопку в проходе у вас может быть флажок когда флажок установлен. он покажет кнопку, и когда вы нажмете, она может сделать кнопку invisble

licensed under cc by-sa 3.0 with attribution.