gpt4 book ai didi

Swing 框架上的 javafx 警报对话框

转载 作者:行者123 更新时间:2023-12-01 11:16:23 25 4
gpt4 key购买 nike

我正在开发一个基于swing和javafx 8的应用程序。在此创建一个swing和jbutton使用的框架,jbutton Action 代码是在javafx 8意味着使用场景中完成的。在此创建一个警报对话框。但问题是,如果我单击警报对话框之外的任何位置,则警报对话框隐藏在 Swing 框架后面。我希望 javafx 警报对话框保留在我创建的 Swing 框架上。如果我单击警报上的“确定”,则操作将转到 Swing 架。请建议......

这是我的代码:

    final JFXPanel fxPanel = new JFXPanel();


Platform.runLater(new Runnable() {
public void run() {
initFX(fxPanel);
}

private void initFX(JFXPanel fxPanel) {
// TODO Auto-generated method stub
Scene scene = createScene();
fxPanel.setScene(scene);
}

private Scene createScene() {

Group root = new Group();
Scene scene = new Scene(root);

Alert cn=new Alert(AlertType.CONFIRMATION);
cn.initStyle(StageStyle.UNDECORATED);

cn.setTitle(null);
cn.setHeaderText(null);
cn.setContentText(ProjectProps.rb.getString("msg.play.confirm"));

DialogPane dp=cn.getDialogPane();
dp.getStylesheets().add(getClass().getResource("login.css").toExternalForm());
dp.setStyle("-fx-border-color: black; -fx-border-width: 5px; ");

Optional<ButtonType> result=cn.showAndWait();
if(result.get()==ButtonType.OK){
System.out.println("ok button clicked:"+result.get());
k=0;
} else{
System.out.println("cancel clicked");
k=1;
}
return (scene);
}

});

最佳答案

我不确定你到底想做什么。您是否确实需要在 Swing 应用程序中使用 JavaFX 警报? JDialog 工作得很好,Alert 和 Dialogs 在 JavaFX 上下文中也工作得很好。

您是否尝试过使用cn.initModality(Modality.APPLICATION_MODAL)设置警报应用程序模式?

也许您可以在这篇文章中找到答案:How to make a JFrame Modal in Swing java

这是帖子中建议的代码:

final JDialog frame = new JDialog(parentFrame, frameTitle, true);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);

我将创建一个新的 JDialog 并将您的主框架(parentFrame)设置为参数,并将 JFXPanel 添加到其内容中。

frame.getContentPane.add(fxPanel)

您可以使用fxPanel.setScene(yourScene)将FX内容添加到您的JDialog。

建议示例:

public class Main  {

public static void main(String[] args) {

// create parent
JFrame parent = new JFrame("MainFrame");
parent.setSize(500, 500);

// center of screen
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
parent.setLocation(dim.width/2-parent.getSize().width/2, dim.height/2-parent.getSize().height/2);
parent.setVisible(true);

createDialog(parent);

}

private static void createDialog(JFrame parent) {

// create dialogs JFX content
BorderPane layout = new BorderPane();
layout.setTop(new Button("HELLO"));
layout.setBottom(new Button("IT'S ME"));
Scene scene = new Scene(layout);
JFXPanel dlgContent = new JFXPanel();
dlgContent.setScene(scene);
dlgContent.setPreferredSize(new Dimension(200, 200));
dlgContent.setVisible(true);

// create dialog and set content
JDialog dlg = new JDialog(parent, "Dialog", true);
dlg.setLocationRelativeTo(parent);
dlg.getContentPane().add(dlgContent);
dlg.pack();
dlg.setVisible(true);

}

}

希望能帮到你。

关于 Swing 框架上的 javafx 警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com