2015-08-03 145 views
0

我正在研究基于swing和javafx 8的应用程序。在此创建一个swing和jbutton框架使用和jbutton动作代码在javafx 8中完成意味着使用场景。在这个警报对话框create.but问题是,如果我单击任何地方,除了提示对话框然后提醒对话框隐藏在摆动框架后面我想要javafx警报对话框保持在我创建的摆动框架,如果我点击确定警报然后行动是去秋千框架。 请建议......swingfarm框架上的javafx警报对话

这里是我的代码:

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); 
     } 

    }); 
+0

请提供任何信息.... – user3774985

回答

0

我不知道要明白你真正想做的事情。您是否需要在swing应用程序中使用JavaFX警报? JDialog工作得很好,并且Alert和Dialogs在JavaFX上下文中工作得非常好。

您是否试图使用cn.initModality(Modality.APPLICATION_MODAL)来设置您的Alert应用程序模式?

也许你可以找到你在这个职位回答: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); 

} 

} 

希望我可以帮助你。