2013-05-07 28 views
0

我有一個JPanel與三個JComboBox。這裏是我寫的代碼:多個JComboBox在一個JPanel

public class Main { 

private static String pat_order; 
private static String PS_selection; 
private static String ovlp_selection; 


public static void main(String args[]) throws FileNotFoundException, IOException { 
    Date start_time = new Date(); 
    try { 
     GridBagConstraints gbc = new GridBagConstraints(); 
     final JComboBox jc = new JComboBox(); 
     jc.addItem("ARR"); 
     jc.addItem("SRR"); 

     final JComboBox jc1 = new JComboBox(); 
     jc1.addItem("RR"); 
     jc1.addItem("IQC"); 

     final JComboBox jc2 = new JComboBox(); 
     jc2.addItem("YES"); 
     jc2.addItem("NO"); 

     JPanel myPanel = new JPanel(new GridBagLayout()); 
     myPanel.add(jc, gbc); 
     myPanel.add(jc1, gbc); 
     myPanel.add(jc2, gbc); 

     jc.addItemListener(new ItemListener() { 
      public void itemStateChanged(ItemEvent ie) { 
       String order = (String) jc.getSelectedItem(); 
       pat_order = order; 
      } 
     }); 


     jc1.addItemListener(new ItemListener() { 
      public void itemStateChanged(ItemEvent ie) { 

       String PS_method = (String) jc1.getSelectedItem(); 
       PS_selection = PS_method; 
      } 
     }); 


     jc2.addItemListener(new ItemListener() { 
      public void itemStateChanged(ItemEvent ie) { 

       String ovlp_user = (String) jc2.getSelectedItem(); 
       ovlp_selection = ovlp_user; 
      } 
     }); 


     if (pat_order == "ARR") { 
      Arrays.sort(patterns_array, new ColumnComparator(0)); 
     } else if (pat_order == "SRR") { 
      Arrays.sort(patterns_array, new ColumnComparator(1)); 
     } 

     if (PS_selection == "RR") { 
      System.out.println("RR"); 
         } else if (PS_selection == "IQC") { 
           System.out.println("IQC"); 
          } 
     if (ovlp_selection == "YES") { 
      Overlap a = new Overlap(Xdisc, final_patterns, k, Yresid, Xresid, projectname, pat_order, PS_selection); 
     } 

    } catch (Exception e) { 
     System.err.println("Error: " + e.getMessage()); 
    } finally { 
    } 
    } 
    } 

問題是,第一個JComboBox工作正常,但第二個和第三個什麼都不做。如果你能幫助我解決這個問題,那將是非常棒的。

+0

我不能看到你定義'gbc'事實地方? – MadProgrammer 2013-05-07 05:52:54

+0

你說得對。我刪除了一些代碼行以避免混淆。 – 2356471 2013-05-07 05:57:09

+0

類似[this](http://stackoverflow.com/a/3191882/230513)? – trashgod 2013-05-07 11:04:16

回答

2

您似乎正在運行您的用戶界面,就好像它是一個控制檯程序。 UI不以這種方式工作,他們對事件做出反應。這些事件可能以任何順序隨時發生......

對話框是控制執行流程的好方法。他們會阻止代碼,直到對話框關閉,讓您確定結果並採取適當的措施。

看看How to use dialogs瞭解更多詳情...

當你那裏,你也可能想通過Creating a UI with Swing一看,這將更多地解釋你需要了解的概念。

那樣的UI需要某種形式的窗口,以顯示在屏幕

0

嘗試添加ActionListener代替ItemListener