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

在我的应用程序中,我需要显示警告/信息消息,但是我不知道这样做的简单方法,因为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;
}

弹出消息:

JavaFX FXML无效类型 - java

我正在Linux中用Eclipse编写JavaFX应用程序,并使用SceneBuilder编写了某些FXML代码。当我移至Windows时,如果我尝试执行代码,它将运行良好,但是,如果我尝试修改fxml文件,它将开始给我一个错误(与修改无关)。我也尝试使用NetBeans,但没有任何改变。错误是:javafx.fxml.LoadException: Ligh…

JavaFX FXMLLoader:从jar文件加载时未设置位置 - java

我有一个问题,当我将项目导出到jar文件时,会出现错误:java.lang.IllegalStateException: Location is not set. 这是由于我试图做出如下所示的视图而引起的:public View(Stage stage) throws IOException { loader = new FXMLLoader(getClas…

JavaFX HBox HGrow优先级 - java

我有一个包含javafx.scene.layout.HBox的JavaFX场景。此HBox包含两个孩子,一个javafx.scene.control.ComboBox后跟一个javafx.scene.control.Spinner。最小的FXML文件来说明我的问题是:<?import javafx.scene.control.ComboBox?>…

在TreeView中设置选定的TreeItem - java

我在GridPane中有一个TreeView。某些功能要求用户选择一个TreeItem并单击屏幕上的按钮。与按钮关联的功能完成后,我希望焦点返回到先前在TreeView中选择的TreeItem。在按钮操作结束时,我有:TreeItem<String> selectedItem = [TreeItem that was last selected]…

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

在JavaFx应用程序的fxml类中,我想使用最少的组件(而不是每行添加多个标签)来添加大量文本。我还想在同一组件中创建各种样式的文本。我应该使用哪个组件(例如TextArea),以及如何在其中创建多个样式(使用CSS)。 参考方案 使用TextFlow并向其中添加Text。您可以在各个Text组件上使用CSS为它们设置不同的样式。完整的例子:import …