Java 基于JComboBox选择的JTextField更新

Java 基于JComboBox选择的JTextField更新,java,swing,jtextfield,jcombobox,Java,Swing,Jtextfield,Jcombobox,我正在尝试构建一个表单,其中可以将自己的值填充到JTextField中,或者依赖一个预设选项,这取决于JComboBox中的选择 这是JCombobox String[] areas = new String [] {"Own Specifications", "SurveySample", "UK", "London", "Surrey"}; @SuppressWarnings({ "unchecked", "rawtypes" }) final 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);
根据用户的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(新ActionListener(){
已执行的公共无效操作(操作事件e){
@抑制警告(“未选中”)
JComboBox selectedArea=(JComboBox)e.getSource();
String selectedItem=(String)selectedArea.getSelectedItem();
if(selectedItem.equals(“自己的规范”)){
tenureprivatenters.setText(“10”);
System.out.println(“好选择!”);
}
}
}
);
}

但对于这两种选择,一切都没有发生,JTextField的价值仍然取决于“私人承租人”。你知道我哪里出错了吗?

在你的itemStateChanged方法中,你有以下几点:

Object selectedValue = selectedArea.getSelectedItem();
getSelectedItem方法返回一个对象。然后,调用该对象的equals方法:

if(selectedValue.equals("Own Specifications")){
这肯定会返回false,因为Object equals方法正在比较String类型的对象和Object类型的对象

相反,如果要将selectedValue与字符串进行比较:

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

然后,if语句应该可以像预期的那样工作。

我已经尝试了您的代码,它工作得非常好。在尝试更改combobox的值之前,是否确定已将这些侦听器正确附加到combobox?尝试将它们正确地附加到构造函数中以确保

if(selectedValue.equals("Own Specifications")){
String selectedValue = (String)selectedArea.getSelectedItem();