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

标签 java user-interface javafx-2 javafx

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

有一个 Popup 类,但是你必须设置许多参数才能为一条简单的消息获得合适的布局/位置/背景颜色/等...所以我想知道是否有一个简单的、已经实现的组件来显示消息,如果 JavaFX 不提供任何体面的东西,可能在第三方库中。

在此先感谢您的帮助/提示。

最佳答案

ControlsFX 是 JavaFX 8,所以我不能使用它,而其他替代方案的复杂程度几乎与我要执行的操作相同。所以我实现了自己的方法来使用 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);
}


CSS:

.popup {
    -fx-background-color: cornsilk;
    -fx-padding: 10;
    -fx-border-color: black; 
    -fx-border-width: 5;
    -fx-font-size: 16;
}


弹出消息:

enter image description here

关于JavaFX:显示简单消息的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18669209/

相关文章:

java - 调整 3 列通用组件的布局,其他组件位于上方/下方

java - 创建具有不同样式的大量文本 - JavaFX FXML

javafx-2 - JavaFX 在路径中播放带有空格的本地视频

java - 实现切换全屏菜单项

java - 应用程序类 'com.sun.xml.messaging.saaj.soap.SOAPPartImpl.:119' 引发的异常

java - 图片上传下载到google appengine很慢

java - Spring Boot Hikari 找不到 DriverClassName

java - 如何使用 Java 存储过程显示表数据?

user-interface - 有人使用错误消息样式指南吗?

css - TornadoFX addClass 不添加CSS