JavaFX:显示简单消息的最佳方式是什么?

cek*_*ock 2 java user-interface javafx javafx-2

在我的应用程序中,我需要显示警告/信息消息,但我不知道一种简单的方法,因为JavaFX上没有JOptionPane或类似的组件.

有一个Popup类,但你需要设置很多参数来获得一个简单的布局/位置/背景颜色等等...所以我想知道是否有一个简单的,已经实现的组件来显示消息,如果JavaFX没有提供任何体面的东西,也许在第三方库中.

在此先感谢任何帮助/提示.

cek*_*ock 11

ControlsFX是JavaFX 8所以我不能使用它,而其他选择几乎与我要做的事情的复杂程度相同.所以我实现了自己的方法来使用Popup显示信息/警告消息.

这是我实现的源代码.只是一些调整显示Popup以窗口为中心,使用CSS并在用户点击它时隐藏.

public static Popup createPopup(final String message) {
    final Popup popup = new Popup();
    popup.setAutoFix(true);
    popup.setAutoHide(true);
    popup.setHideOnEscape(true);
    Label label = new Label(message);
    label.setOnMouseReleased(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent e) {
            popup.hide();
        }
    });
    label.getStylesheets().add("/css/styles.css");
    label.getStyleClass().add("popup");
    popup.getContent().add(label);
    return popup;
}

public static void showPopupMessage(final String message, final Stage stage) {
    final Popup popup = createPopup(message);
    popup.setOnShown(new EventHandler<WindowEvent>() {
        @Override
        public void handle(WindowEvent e) {
            popup.setX(stage.getX() + stage.getWidth()/2 - popup.getWidth()/2);
            popup.setY(stage.getY() + stage.getHeight()/2 - popup.getHeight()/2);
        }
    });        
    popup.show(stage);
}
Run Code Online (Sandbox Code Playgroud)


CSS:

.popup {
    -fx-background-color: cornsilk;
    -fx-padding: 10;
    -fx-border-color: black; 
    -fx-border-width: 5;
    -fx-font-size: 16;
}
Run Code Online (Sandbox Code Playgroud)


弹出消息:

在此输入图像描述


小智 7

使用 Java 8u40 及更高版本,您无需担心。它有JavaFX 对话框

这是一个学习链接:http : //code.makery.ch/blog/javafx-dialogs-official/

就这么简单:

Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Information Dialog");
alert.setHeaderText("Look, an Information Dialog");
alert.setContentText("I have a great message for you!");

alert.showAndWait();
Run Code Online (Sandbox Code Playgroud)