我正在尝试用 Java 制作一个单位转换器来训练自己,但我在这里遇到了问题。
我有一个按钮可以转换指定单位中的指定数字,因此我为按钮创建了一个动作侦听器,该按钮使用三个参数调用我的函数 convert()
。这些参数是一个双精度值和两个字符串。但是,我的字符串是来自两个 JComboBox
的单位,所以我使用方法 .getSelectedItem
来获取单位。但是,这个方法显然返回一个对象(???)而不是一个字符串。
我怎样才能确定我的单位是用这种方法守恒的?有没有可能我的单位没有选好?我怎样才能得到一个字符串来调用我的 convert()
方法?
答案 0 :(得分:2)
总是尝试使用泛型而不是像 JComboBox
这样没有类型安全的使用,更好的方法是像 JComboBox<String>
这样写以避免任何显式的类型转换。对于您的场景,您还可以使用显式类型转换以及下面定义的代码,考虑到在组合框中选择了该项目,两种方式都应该可以正常工作,否则代码将出现某些异常。
JComboBox<String> units1 = new JComboBox<>(); //use typesafety
JComboBox<String> units2 = new JComboBox<>(); //use typesafety
String string1 = units1.getModel().getElementAt(units1.getSelectedIndex());
String string2 = units2.getModel().getElementAt(units2.getSelectedIndex());
答案 1 :(得分:0)
解决方案是在方法调用中强制转换参数。如代码所示