2013-04-18 34 views
0

我測試JavaFX中創建簡單的對話框創建對話框,但由於某些原因的代碼是不工作:如何在JavaFX的

MenuBar menuBar = new MenuBar(); 

     // File menu - new, save, exit 
     Menu menu = new Menu("File"); 
     menu.getItems().add(new MenuItem("New")); 
     menu.getItems().add(new MenuItem("Save")); 
     menu.getItems().add(new SeparatorMenuItem()); 

     menuBar.getMenus().add(menu); 

     // Options menu - Preferences 
     Menu options = new Menu("Options"); 
     options.getItems().add(new MenuItem("Preferences")); 

     menuBar.getMenus().add(options); 

     // Help menu - About 
     Menu help = new Menu("Help"); 
     MenuItem about = new MenuItem("Exit"); 


     about.setOnAction(new EventHandler<ActionEvent>() { 
      @Override 
      public void handle(ActionEvent e) { 
       Stage dialogStage = new Stage(); 
       dialogStage.initModality(Modality.WINDOW_MODAL); 
       dialogStage.setScene(new Scene(VBoxBuilder.create(). 
         children(new Text("Hi"), new Button("Ok.")). 
         alignment(Pos.CENTER).padding(new Insets(5)).build())); 
       dialogStage.show(); 
      } 
     }); 

     menuBar.getMenus().add(help); 

     menuBar.prefWidthProperty().bind(primaryStage.widthProperty()); 

     root.getChildren().add(menuBar); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

我想,當我在About菜單項,單擊以顯示與筆者簡單的對話窗口信息。你能告訴我如何糾正我的錯誤嗎?

+3

您是否看到關於菜單項?在顯示的代碼中,它沒有添加到菜單中... – Puce

+0

類似於:[如何在JavaFX 2.1中創建模態窗口](http://stackoverflow.com/questions/10486731/how-to-create-a-modal -window-in-javafx-2-1),[如何在JavaFX 2.0中創建並顯示通用對話框(錯誤,警告,確認)?](http://stackoverflow.com/questions/8309981/how-to-create - 和 - 顯示常見對話框錯誤警告確認在javafx - 2)和[JavaFX 2.1 MessageBox](http://stackoverflow.com/questions/11662857/javafx-2-1-messagebox) – jewelsea

回答

2

您可以試試我的自定義對話框。訪問FXDialog公共存儲庫。

1

我也在尋找幾天的FX對話框功能。在我嘗試編寫自己的複雜對話框之前,我遇到了「救世主」ControlsFX [here](http://fxexperience.com/)。它對我來說就像是一個奇蹟。但是,您將不得不升級到JDK8,充分體驗ControlFX對FX8的驚歎。我相信每個人遲早都會使用JDK8。

幸運的是,我的原始代碼在太複雜之前沒有做太多太多的事情來完成這樣的轉換。 :)

希望這篇文章也喂5萬JAVAer。看看它如何與以下示例代碼一起工作:

Action response = Dialogs.create() 
     .owner(null) 
     .title("Confirmation") 
     .masthead("Are you sure to delete UserLevel: '"+ul.getLevelname()+"' ?") 
     .message(entry) 
     .showConfirm(); 

    System.out.println("response: " + response);   


    if (response.toString().equals("YES")){ 
     if(!Main.db.em.getTransaction().isActive()) 
      Main.db.em.getTransaction().begin(); 

     Main.db.em.remove(ul); 
     Main.db.em.getTransaction().commit(); 
     tbvMain.getItems().remove(tbvMain.getSelectionModel().getSelectedIndex()); 
    }