alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Title");
alert.setHeaderText("Some Text");
alert.setContentText("Choose your option.");
buttonTypeOne = new ButtonType("Yes");
buttonTypeCancel = new ButtonType("No", ButtonData.CANCEL_CLOSE);
alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);
Optional<ButtonType> result = alert.showAndWait();
编辑:包括示例代码-
>
compute.java-执行计算的另一个java类。
公共类Compute{Alert Alert;
public void function1{
Platform.runLater(new Runnable(){
public void run(){
alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("Title");
alert.setHeaderText("Some Text");
alert.setContentText("Choose your option.");
buttonTypeOne = new ButtonType("Yes");
buttonTypeCancel = new ButtonType("No", ButtonData.CANCEL_CLOSE);
alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == buttonTypeOne){
// ... user chose "One"
} else {
// ... user chose CANCEL or closed the dialog
}
}
});
}
public void function2{
//......Does some long computation here
//.... If the computation finishes before the user chooses 'Yes' or 'No' on alert box
//...Then close the alertbox here and execute the code corresponding to buttonTypeCancel
//..I tried alert.close(); and alert.hide(); but doesn't work.
}
}
还有,有没有其他的解决方案可以做到这一点呢?最初,我想让compute.java
中的任何javafx代码保持干净,但不知道如何保持干净。
试试这个
public void function2 {
Button cancelButton = ( Button ) alert.getDialogPane().lookupButton( buttonTypeCancel );
cancelButton.fire();
}
或更一般的
public void function2 {
for ( ButtonType bt : alert.getDialogPane().getButtonTypes() )
{
if ( bt.getButtonData() == ButtonBar.ButtonData.CANCEL_CLOSE )
{
Button cancelButton = ( Button ) alert.getDialogPane().lookupButton( bt );
cancelButton.fire();
break;
}
}
}
完整示例:
@Override
public void start( final Stage primaryStage )
{
Alert alert = new Alert( Alert.AlertType.CONFIRMATION );
alert.setTitle( "Title" );
alert.setHeaderText( "Some Text" );
alert.setContentText( "Choose your option." );
ButtonType buttonTypeOne = new ButtonType( "Yes" );
alert.initModality( Modality.NONE );
ButtonType buttonTypeCancel = new ButtonType( "No", ButtonBar.ButtonData.CANCEL_CLOSE );
alert.getButtonTypes().setAll( buttonTypeOne, buttonTypeCancel );
Button b = new Button( "close alert" );
b.setOnAction(( ActionEvent event ) ->
{
for ( ButtonType bt : alert.getDialogPane().getButtonTypes() )
{
System.out.println( "bt = " + bt );
if ( bt.getButtonData() == ButtonBar.ButtonData.CANCEL_CLOSE )
{
Button cancelButton = ( Button ) alert.getDialogPane().lookupButton( bt );
cancelButton.fire();
break;
}
}
});
final Scene scene = new Scene( new Group( b ), 400, 300 );
primaryStage.setScene( scene );
primaryStage.show();
Optional<ButtonType> result = alert.showAndWait();
if ( result.get() == buttonTypeOne )
{
System.out.println( "one " );
}
else if( result.get() == buttonTypeCancel )
{
System.out.println( "cancel " );
}
}
问题内容: 我对joptionpane有疑问。 使用JOptionPane.showMessageDialog(…),我们可以创建一个消息对话框。但是如何以编程方式将其关闭? 问题答案: 您总是可以通过获取其持有的任何组件的WindowAncestor来获得对JOptionPane的引用,然后调用或返回Window。该窗口可以通过使用获得 例如:
我正在使用新的JavaFX Alert类(Java1.8_40),并尝试在exibition文本中使用HTML标记,但到目前为止还没有成功。下面是我正在尝试做的一个例子。 有没有人知道这是不是真的可能,给我举个例子? 提前道谢。
问题内容: 我希望能够在一定时间后或在特定事件(例如)后使用Javascript自动关闭警报框。从我的研究来看,内置函数似乎不可能实现。有没有办法覆盖它并控制它打开的对话框? 另外,我不希望显示隐藏的div作为警报的替代。我需要一个实际的对话框。 问题答案: 如前所述,您确实无法做到这一点。您可以使用UI框架在窗口内进行模式对话框,也可以具有弹出窗口,该脚本具有超时后自动关闭的脚本…每个方面都有负
我有一个上下文菜单,它包含一个带有一些控件的CustomMenuItem。单击按钮时,会自动显示对话框和隐藏上下文菜单。问题是:我想在对话框显示时阻止关闭上下文菜单。我该如何解决这个问题呢? 我已经追踪到这件事了。当对话框打开时,将触发一个FocusUngrabEvent.Focus_Ungrab事件,该事件在PopupWindow中处理。我已经尝试在FocusUngrabEvent.Focus_
我正在使用netty 4.0。24.4决赛。 我需要以编程方式启动/停止网络服务器。 在启动服务器时,线程在 请提供一些如何正确操作的提示。下面是由主类调用的EchoServer。谢谢 更新:我用以下方式更改了EchoServer类。其想法是在新线程中启动服务器,并保留到EventLoopGroup的链接。这条路对吗?
我想以编程方式取消系统生成的报警对话框。我已经尝试了这里提供的所有解决方案(stackoverflow)但似乎都不起作用。这是普遍接受的答案,但它只排除了通知面板和最近的任务菜单。 我已经在操作系统版本4.0.3、4.2.2、4.4.2和5.1.1的设备上测试了它,它在所有这些设备上都具有相同的行为。有一些应用程序实际上可以取消所有的系统对话框(Mubble)。有人能建议一下是怎么做的吗? 谢谢