我浏览了一些文档这里和这里,发现胶子对话框可以*有一个泛型类型,这将是调用showAndWait()时要返回的对象的泛型类型。但是胶子警报(com.gluonhq.charm.glisten.control.Alert是com.gluonhq.charm.glisten.control.Dialog的一个子类)似乎没有泛型类型,也不允许您给它泛型。
当我试图将setOnHidden调用为:
boolean shown;
String report = "";
Alert al = new Alert(AlertType.ERROR);
al.setContentText(report);
al.setAutoHide(false);
al.setOnHidden(e->{
shown = false;
});
shown = true;
al.showAndWait();我在setOnHidden()调用中得到了以下警告:
方法setOnHidden(EventHandler)属于原始类型对话框。应该参数化对泛型类型对话框的引用。
任何关于胶子对话框的澄清或消除警告的方法都是最受欢迎的。
发布于 2018-10-03 20:01:11
与内置JavaFX Alert控件一样,胶子Alert控件的隐式类型是相同的: JavaFX内置ButtonType,因此如果单击OK按钮,它将返回ButtonType.OK。
正如您在Alert JavaDoc上看到的那样,该控件有一个或两个默认按钮:一个用于所有这些按钮的OK按钮,以及一个用于确认警报的Cancel按钮。这些按钮的默认结果都是ButtonType.OK和ButtonType.CANCEL。
因此,这对于两个Alert控件都有效:
alert.showAndWait().ifPresent(result -> {
if (result == ButtonType.OK) {
// do something;
}
});使用“确定”和“取消”按钮,您将注意到一件事:警报将被解除,因此您不必这样做。
您还可以提供自定义按钮。那么您需要处理调用hide()的问题
final Button myYesButton = new Button("Yes");
myYesButton.setOnAction(event -> {
alert.setResult(ButtonType.YES);
alert.hide();
});
alert.getButtons().add(myYesButton);关于setOnHidden,见Javadoc。它需要一个LifecycleEvent
alert.setOnHidden((LifecycleEvent event) -> System.out.println("alert hidden"));但你可以用:
alert.setOnHidden(event -> System.out.println("alert hidden"));最后,确保您正在导入正确的控件:
import com.gluonhq.charm.glisten.control.Alert;
...
Alert alert = new Alert(javafx.scene.control.Alert.AlertType.ERROR);https://stackoverflow.com/questions/52634150
复制相似问题