2015-08-03 104 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); 

} 

} 

希望我可以幫助你。