Так что я пытаюсь достичь здесь, если выбран первый переключатель и первый вариант из первой выпадающей ячейки, то я хочу отображать пищу под этой категорией, если это первая радиостанция и второй вариант из первой combobox, а затем еще одну пищу под этой категорией. Я получил часть радиобуйфона, работающую нормально, но не смог получить выпадающую часть вместе с ней. Строка rb1.isSelected() & & cmbItems [0] .isSelected() дает мне ошибку. Пожалуйста, помогите мне преодолеть эту ошибку. Вот мой код:Добавление ActionListener в JRadioButton & JComboBox
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Tryout extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTabbedPane tabbedPane = new JTabbedPane();
private JPanel inputpanel;
private JPanel searchpanel;
public JButton submit;
public JRadioButton rb1, rb2;
public JComboBox <String> cmb;
public String cmbItems [] ={"North Indian","South Indian","East Indian", "West Indian"};
JFrame frame=new JFrame("Get selected JRadioButton");
public Tryout() {
inputpanel = createPage1();
searchpanel = createPage2();
tabbedPane.addTab("Input Form", inputpanel);
tabbedPane.addTab("Search Form", searchpanel);
this.add(tabbedPane, BorderLayout.CENTER);
}
public JPanel createPage1() {
String cmbItems2 [] ={"European","Asian","American"};
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
//Column1
c.anchor = GridBagConstraints.LINE_START;
c.weightx = 0.5;
c.weighty = 0.5;
JLabel region = new JLabel("Enter Region");
c.gridx = 0;
c.gridy = 0;
panel.add(region, c);
JLabel subregion = new JLabel("Enter Sub-Region");
c.gridx = 0;
c.gridy = 1;
panel.add(subregion, c);
//Column2
c.anchor = GridBagConstraints.LINE_START;
ButtonGroup bg = new ButtonGroup();
rb1 = new JRadioButton("Indian");
c.gridx = 1;
c.gridy = 0;
bg.add(rb1);
panel.add(rb1, c);
cmb = new JComboBox<String>(cmbItems);
c.gridx = 1;
c.gridy = 1;
panel.add(cmb, c);
//Column3
c.anchor = GridBagConstraints.LINE_START;
rb2 = new JRadioButton("International");
c.gridx = 2;
c.gridy = 0;
bg.add(rb2);
panel.add(rb2, c);
JComboBox<String> cmb2 = new JComboBox<String>(cmbItems2);
c.gridx = 2;
c.gridy = 1;
cmb2.setEnabled(false);
panel.add(cmb2, c);
submit = new JButton("Submit");
c.weighty = 10;
c.anchor = GridBagConstraints.FIRST_LINE_START;
c.gridx = 1;
c.gridy = 2;
panel.add(submit, c);
submit.addActionListener(this);
return panel;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==submit) {
if(rb1.isSelected() && cmbItems[0].isSelected()) {
JOptionPane.showMessageDialog(frame,"You select : "+rb1.getText());
}
else if(rb2.isSelected()) {
JOptionPane.showMessageDialog(frame,"You select : "+rb2.getText());
}
}
}
public JPanel createPage2() {
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.RELATIVE;
JTextField field = new JTextField(20);
panel.add(field);
JButton search = new JButton("SEARCH");
panel.add(search);
return panel;
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Tryout ex = new Tryout();
ex.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ex.setSize(500,500);
ex.setVisible(true);
}
});
}
}
Работали как очарование. У меня есть еще одна вещь, чтобы спросить вас. То, что я также пытаюсь сделать, заключается в том, чтобы отключить ComboBox, когда выбран индийский. Я хочу, чтобы раскрывающийся список, соответствующий индексу, был включен и нажал кнопку, покажите соответствующее сообщение. – trollster
добавьте 'ActionListener' для обоих переключателей. Для «индийского» ActionListener включите combobox с 'cmb.setEnabled (true)'. Для «International» ActionListener отключите комбобокс с помощью 'cmb.setEnabled (false)'. Вы также можете отключить выпадающий список при первоначальном загрузке графического интерфейса. – jedyobidan
Я не могу полностью вас достать, небольшой пример поможет. – trollster