2014-05-11 45 views
0

我想建立一個表單,可以將自己的值填入JTextField或依賴預設的選項,這取決於從JComboBox中的選擇。JTextField更新基於JComboBox選擇

這是JComboBox中

String[] areas = new String [] {"Own Specifications", "SurveySample", "UK", "London", "Surrey"}; 

    @SuppressWarnings({ "unchecked", "rawtypes" }) 
    final JComboBox<String> selectedArea = new JComboBox(areas); 
    //selectedArea = new JComboBox<String>(); 
    selectedArea.setModel(new DefaultComboBoxModel<String>(areas)); 
    selectedArea.setBounds(282, 52, 164, 27); 

    contentPane.add(selectedArea); 

這是JTextField的

tenurePrivateRenters = new JTextField(); 
    tenurePrivateRenters.setHorizontalAlignment(SwingConstants.CENTER); 
    tenurePrivateRenters.setText("Private Renters"); 
    tenurePrivateRenters.setBounds(58, 213, 134, 28); 
    contentPane.add(tenurePrivateRenters); 

根據用戶的選擇的JComboBox,在一個JTextField,該值應該改變,例如如果調查中的樣本選擇應JTextField的偶然其值設置爲10

我嘗試以下兩個選項:

selectedArea.addItemListener(new ItemListener() { 

     @Override 
     public void itemStateChanged(ItemEvent e) { 
      // TODO Auto-generated method stub 
      Object selectedValue = selectedArea.getSelectedItem(); 
      if(selectedValue.equals("Own Specifications")){ 
       tenurePrivateRenters.setText("10"); 
       System.out.println("Good choice!");  
      } 
     } 
    }); 

selectedArea.addActionListener(new ActionListener() { 
     public void actionPerformed (ActionEvent e){ 
      @SuppressWarnings("unchecked") 
      JComboBox<String> selectedArea = (JComboBox<String>) e.getSource(); 
      String selectedItem = (String) selectedArea.getSelectedItem(); 
      if(selectedItem.equals("Own Specifications")){ 
      tenurePrivateRenters.setText("10"); 
      System.out.println("Good choice!"); 
      } 
     } 
    } 
    ); 

} 

但對於這兩個選項沒有任何反應和JTextField的值保留在「Private Renters」中。任何想法是關於我要去哪裏的錯誤?

回答

0

在你的itemStateChanged方法,您具備以下條件:

Object selectedValue = selectedArea.getSelectedItem(); 

的getSelectedItem方法返回一個對象。然後,您調用該對象的equals方法:

if(selectedValue.equals("Own Specifications")){ 

這無疑會始終返回false,因爲對象的equals方法是String類型的對象與Object類型的對象。

相反,如果你想了selectedValue比較字符串:

String selectedValue = (String)selectedArea.getSelectedItem(); 

然後,if語句應該正常工作。

0

我試過你的代碼,它完美的工作。你確定你正在附加這些聽衆組合框之前,你試圖改變它的價值?嘗試將它們正確地附加在構造函數中以確保。