基于JComboBox选择的JTextField更新

时间:2014-05-11 20:02:37

标签: java swing 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中,该值应该更改,例如如果选择了Survey Sample,则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的值仍然是“私人渲染器”。关于我出错的地方有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在itemStateChanged方法中,您有以下内容:

Object selectedValue = selectedArea.getSelectedItem();

getSelectedItem方法返回一个Object。然后,您调用Object的equals方法:

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

这肯定总是返回false,因为Object equals方法将String类型的对象与Object类型的对象进行比较。

相反,如果要将selectedValue与String进行比较:

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

然后,if语句应该按预期工作。

答案 1 :(得分:0)

我已经尝试过你的代码,但它运行得很好。在尝试更改其值之前,您确定要将这些侦听器正确附加到组合框吗?尝试将它们正确地附加在构造函数中。