小编And*_*ndy的帖子

如何在不使用任何“ButtonType”控件的情况下在 JavaFx 中创建自定义对话框?

我想创建一个 custom Dialog,它只显示选项(见图 1)。如果用户选择这些选项之一,对话框应关闭并立即返回相应的结果。

到目前为止,我只能通过向 中添加任意值,通过在单击的选项中使用和应用ButtonTypeDialog隐藏它来完成此操作。 setVisible(false)fire()EventHandler

这种奇怪的解决方法实际上工作正常,但在我看来非常不专业......
那么,如何在不使用 ButtonType 技巧的情况下以更专业或更正确的方式做到这一点?

图1

我的解决方法代码如下所示(Dialog 类):

public class CustomDialog extends Dialog<String> {

    private static final String[] OPTIONS
            = new String[]{"Option1", "Option2", "Option3", "Option4"};
    private String selectedOption = null;
    Button applyButton;

    public CustomDialog() {
        super();
        initStyle(StageStyle.DECORATED);
        VBox vBox = new VBox();
        for (String option : OPTIONS) {
            Button optionButton = new Button(option);
            optionButton.setOnAction((event) -> {
                selectedOption = option;
                applyButton.fire();
            });
            vBox.getChildren().add(optionButton);
        }
        getDialogPane().setContent(vBox); …
Run Code Online (Sandbox Code Playgroud)

java dialog javafx

2
推荐指数
1
解决办法
3043
查看次数

实施归约运算来找到数字的最大差异?

我正在寻找合适的基于流的归约操作来查找双列表的最大差异。(请不要使用旧式嵌套 for 循环的解决方案......)

假设我的双重列表是
List<Double> list = List.of(1.1, 0.3, 7.8, 1.0, 9.1, 2.3);
最大差异将导致的值
9.1 - 0.3 = 8.8


我使用 java-streams 的第一个工作方法是:

List<Double> list = List.of(1.1, 0.3, 7.8, 1.0, 9.1, 2.3);
double maxDiff = list.stream().max(Double::compareTo).get()
    - list.stream().min(Double::compareTo).get();
Run Code Online (Sandbox Code Playgroud)

如何实现自定义累加器和组合器来进行归约操作Stream.reduce()以实现相同的效果?

java reduce reduction java-stream

2
推荐指数
1
解决办法
73
查看次数

标签 统计

java ×2

dialog ×1

java-stream ×1

javafx ×1

reduce ×1

reduction ×1