JavaFX:如何为组合框设置操作?

标签 java user-interface javafx combobox

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() 中添加另一个 new 货币(名称, 汇率)。 ..) 调用),与使用字符串填充组合框的方法(在 switch 或 if 语句中需要另一个方法和另一个 case)相比。这种方法还有许多其他好处。

关于JavaFX:如何为组合框设置操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190087/

相关文章:

java - java的image magick问题

java - 将项目添加到有序集中的数组的问题

java - While Loop with hasNextInt() 实际读取?

java - 最小化 setOnSeekBarChangeListener 样板

asp.net - 如何将 CssClass 应用于一系列具有不同 ID 的相似对象

JavaFX - 迭代每行 GridPane 节点 - 读取每行 GridPane 节点

java - JComboBox 多次输入相同内容

Android - onOptionsItemSelected UI 卡住直到完成

java - 如何在 javafx 中将图像裁剪成碎片,以便用图 block 创建游戏拼图?

javafx - 单击鼠标中键即可选择 TableView 行