简体   繁体   English

将ActionListener添加到JRadioButton和JComboBox

[英]Adding ActionListener to JRadioButton & JComboBox

So what I am trying to achieve here is, if the first radio button and the first option from the first combobox is selected then I want to display the food under that category, if it is first radio button and the second option from the first combobox then some other food under that category. 所以我要在这里实现的是,如果选择了第一个组合框的第一个单选按钮和第一个选项,那么我想显示该类别下的食物,如果它是第一个组合框的第一个单选按钮和第二个选项然后是该类别下的其他食物。 I got the radiobutton part working fine but not able to get the dropdown part along with it. 我的单选按钮部分工作正常,但无法同时使用下拉部分。 The line rb1.isSelected() && cmbItems[0].isSelected() is giving me the error. 行rb1.isSelected()&& cmbItems [0] .isSelected()给了我错误。 Please help me overcome the error. 请帮助我克服错误。 Here is my code: 这是我的代码:

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);
                        }
                });
        }       
}

cmbItems is an array of strings, so naturally it wouldn't know anything about whether it's "selected." cmbItems是一个字符串数组,因此自然不会对其是否被“选中”一无所知。 You want to ask the combobox itself what the selected item is, so you should say 您想问问组合框本身,所选项目是什么,所以您应该说

if(rb1.isSelected() && cmb.getSelectedIndex() == 0) {
    JOptionPane.showMessageDialog(frame,"You select : "+rb1.getText());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM