作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ComboBox dropDown = new ComboBox();
dropDown.getItems().addAll("Mexican Peso", "Canadian Dollar", "Euro", "British Pound");
dropDown.setOnAction(e -> dropDownMenu());
private void dropDownMenu(ComboBox dropDown){
}
private void calculatePound() {
double n1 = Double.parseDouble(input.getText());
output.setText(String.format("%.2f", n1*.80));
}
我试图为组合框中的每个单独元素调用一个方法。举个例子:如果有人选择“英镑”,它会调用我编写的calculatePound方法并计算英镑转换。我还没有做过太多 GUI,所以我正在尝试更多地练习它。
最佳答案
执行此操作的惯用方法是创建一个封装所需数据和功能的类,并用它的实例填充组合框。
例如创建一个 Currency
类:
public class Currency {
private final double exchangeRate ;
private final String name ;
public Currency(String name, double exchangeRate) {
this.name = name ;
this.exchangeRate = exchangeRate ;
}
public double convert(double value) {
return value * exchangeRate ;
}
public String getName() {
return name ;
}
@Override
public String toString() {
return getName();
}
}
然后做
ComboBox<Currency> dropDown = new ComboBox<>();
dropDown.getItems().addAll(
new Currency("Mexican Peso", 18.49),
new Currency("Canadian Dollar", 1.34),
new Currency("Euro", 0.89),
new Currency("British Pound", 0.77)
);
现在您需要做的就是
dropDown.setOnAction(e -> {
double value = Double.parseDouble(input.getText());
double convertedValue = dropDown.getValue().convert(value);
output.setText(String.format("%.2f", convertedValue));
});
您可以向 Currency
类添加其他特定于货币的信息,例如货币符号和格式规则等。
请注意,使用这种方法添加更多货币是多么容易(您所需要的只是在 dropDown.getItems().addAll() 中添加另一个
调用),与使用字符串填充组合框的方法(在 switch 或 if 语句中需要另一个方法和另一个 case)相比。这种方法还有许多其他好处。new 货币(名称, 汇率)
。 ..)
关于JavaFX:如何为组合框设置操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190087/
我是一名优秀的程序员,十分优秀!