[英]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.