【问题标题】:JTextField Update based on JComboBox Selection基于 JComboBox 选择的 JTextField 更新
【发布时间】:2014-06-29 02:58:04
【问题描述】:

我正在尝试构建一个表单,其中可以将自己的值填写到 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”上。知道我哪里出错了吗?

【问题讨论】:

    标签: java swing jtextfield jcombobox


    【解决方案1】:

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

    Object selectedValue = selectedArea.getSelectedItem();
    

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

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-16
        • 1970-01-01
        • 2021-05-21
        • 2015-12-30
        • 2021-02-04
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多