2013-03-21 3 views
1

Так что я пытаюсь достичь здесь, если выбран первый переключатель и первый вариант из первой выпадающей ячейки, то я хочу отображать пищу под этой категорией, если это первая радиостанция и второй вариант из первой 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); 
         } 
       }); 
     }  
} 

ответ

2

cmbItems представляет собой массив строк, поэтому, естественно, он не будет ничего о будь то знает «выбрано.» Вы хотите спросить себя, что выбранный элемент, то вы должны сказать

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

Работали как очарование. У меня есть еще одна вещь, чтобы спросить вас. То, что я также пытаюсь сделать, заключается в том, чтобы отключить ComboBox, когда выбран индийский. Я хочу, чтобы раскрывающийся список, соответствующий индексу, был включен и нажал кнопку, покажите соответствующее сообщение. – trollster

+0

добавьте 'ActionListener' для обоих переключателей. Для «индийского» ActionListener включите combobox с 'cmb.setEnabled (true)'. Для «International» ActionListener отключите комбобокс с помощью 'cmb.setEnabled (false)'. Вы также можете отключить выпадающий список при первоначальном загрузке графического интерфейса. – jedyobidan

+0

Я не могу полностью вас достать, небольшой пример поможет. – trollster

Смежные вопросы