繁体   English   中英

基于JComboBox选择的JTextField更新

[英]JTextField Update based on JComboBox Selection

我正在尝试构建一种表单,在该表单中可以将自己的值填充到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的值仍保留在“ Private Renters”上。 有什么想法我要去哪里吗?

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

Object selectedValue = selectedArea.getSelectedItem();

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

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

这肯定会始终返回false,因为Object equals方法正在将String类型的对象与Object类型的对象进行比较。

相反,如果要比较selectedValue和String:

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

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

我已经尝试过您的代码,并且效果很好。 在尝试更改其值之前,确定要正确将这些侦听器连接到组合框吗? 请确保将它们正确附加在构造函数中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM