在JavaFX(11)中,我试图在主窗口上方显示一个警报窗口,但我不希望主窗口是可单击的。为此,我认为必须更改警报窗口的initModality(https://docs.oracle.com/javafx/2/api/javafx/stage/stage.html参见'modality')。是否因为警报窗口的所有者为NULL而无法工作?
这是我的控制器类。main类只是IntelliJ IDEA生成的缺省JavaFX main类,.fxml文件只是一个带按钮的anchorpane以供测试。
package sample;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.stage.Modality;
public class Controller {
public Button button;
public void initialize(){
Alert alert = new Alert(Alert.AlertType.ERROR);
System.out.println(alert.getOwner()); //output: null
alert.initModality(Modality.APPLICATION_MODAL);
alert.setHeight(200);
alert.setWidth(300);
alert.show();
button.setOnAction(push -> System.out.println("button pressed")); //button is still pressable
}
}
我认为问题是窗口显示的顺序。在Windows10(使用JavaFX 12.0.1)上使用以下方法进行测试,重现了该问题:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
var alert = new Alert(AlertType.INFORMATION);
alert.initModality(Modality.APPLICATION_MODAL);
alert.setHeaderText(null);
alert.setContentText("This is a test of application modality.");
alert.show();
primaryStage.setScene(new Scene(new StackPane(new Label("Hello, World!")), 500, 300));
primaryStage.show();
}
}
上面的结果是一个对话框窗口不是正确的模式。但是,如果将alert.show()
移动到primarystage.show()
之后,所有操作都按预期进行。
由于您在FXML控制器的initialize()
方法中显示警报
,因此很可能在显示主窗口之前执行了代码。如果要在应用程序的开始处显示警报
,至少有两个选项:
向控制器
类中添加一个方法,并在显示其他窗口后调用它。
@Override
public void start(Stage primaryStage) throws IOException {
FXMLLoader loader = new FXMLLoader(/*location*/);
primaryStage.setScene(new Scene(loader.load()));
primaryStage.show();
loader.<Controller>getController().showMyAwesomeAlert();
}
我们正在构建一个flink用例,在这个用例中,我们从一个kafka主题进行消费,并根据平均、最大和最小阈值执行聚合和生成警报。我们还需要在翻滚事件时间窗口中有0个事件时通知每个键。我们很难想出一个同样的解决方案。我们考虑的选项如下,如果有其他想法我们还没有考虑,请告诉我们。 < li >可查询状态:保存每个过程窗口功能中的键。从外部应用程序查询状态,并在20分钟时间间隔到期后某个密钥丢失时发出警报
我在用Python编写的Apache Beam管道中处理分析命中。我使用的是10分钟的FixedWindows,当窗口为空时,我希望触发警报(例如,使用Cloud Pub/sub)。到目前为止,我所做的是:
你好,我有一个应用程序有警报,在用户没有响应后,我想刷新警报/再次显示它,但由于某些原因,我没有看到第二个警报,它是空的,像: 我关闭警报,如果它显示,所以我不知道为什么下一个警报是空的。包装应用;
问题内容: 我需要在 警报 框中更改“确定”按钮的样式。 问题答案: 警报框是系统对象,不受CSS约束。为此,您需要创建一个HTML元素并模仿其功能。jQuery UI Dialogue为您做了很多工作,基本上就像我描述的那样:Link。
我正在尝试一个简单的Java FX程序,它可以创建一个窗口,我所需要的只是增加读取已删除文件的能力。我得到了以下代码片段,它不会抛出任何错误,但也不允许我删除任何内容。当我试图删除文件时,它会显示一个红色光标(不允许使用windows光标) 我使用的是Windows 8机器和JDK 8.0_60版。不确定问题出在哪里。代码有问题吗?我错过什么了吗? 我试过的- 已尝试更改传输模式 尝试检查文件权限
我想知道如何使用子窗口更改父窗口中的某些内容。假设我有一个窗口,在按下按钮时,它会打开一个弹出窗口。这个新窗口包含一个JTextArea和另一个名为OK的按钮。当按下Ok按钮时,如何根据JTextArea中的内容更改父窗口的标题?