我想创建一个 custom Dialog,它只显示选项(见图 1)。如果用户选择这些选项之一,对话框应关闭并立即返回相应的结果。
到目前为止,我只能通过向 中添加任意值,通过在单击的选项中使用和应用ButtonType来Dialog隐藏它来完成此操作。 setVisible(false)fire()EventHandler
这种奇怪的解决方法实际上工作正常,但在我看来非常不专业......
那么,如何在不使用 ButtonType 技巧的情况下以更专业或更正确的方式做到这一点?
我的解决方法代码如下所示(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) 我正在寻找合适的基于流的归约操作来查找双列表的最大差异。(请不要使用旧式嵌套 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()以实现相同的效果?