2015-08-03 3 views
0

Я работаю над приложением, которое основано на swing и javafx 8. В этом случае создайте кадр в swing и jbutton, а код jbutton action в javafx 8 означает использование сцены. в этом диалоговом окне оповещения create.but проблема в том, что если я нажимаю где-нибудь, кроме диалогового окна предупреждения, тогда появляется диалоговое окно предупреждения, скрытое за кадром. Мне нужно, чтобы диалоговое окно предупреждения javafx сохранялось на кадре swing, который я создаю. Если я нажимаю ok на предупреждение, тогда действие идет качающаяся рама. пожалуйста предложить ......javafx alert dialog on swing frame

вот мой код:

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

Я не уверен, чтобы понять, что вы действительно хотите сделать. Вам действительно нужно предупреждение JavaFX в приложении swing? 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); 

} 

} 

Надеется, что я мог бы помочь вам.