2012-04-02 27 views
2

(彈出)我在JavaFX 2使用上下文菜單的一個問題:當我點擊左側的JFXPanel文本菜單總是

圖表它從來沒有disappers有誰知道如何解決這個問題?

感謝

這裏是我的代碼

final ContextMenu cm = new ContextMenu(); 
      MenuItem chartItem1 = new MenuItem("Chart Settings"); 

      cm.getItems().add(chartItem1); 

      getScene().setOnMouseReleased(new EventHandler<MouseEvent>() { 
     @Override 
     public void handle(MouseEvent mouseEvent) { 
      if(cm.isShowing()){ 
       cm.hide(); 
      } 
      if(mouseEvent.getButton() == MouseButton.SECONDARY) 
      { 
       cm.show(getScene().getRoot(), mouseEvent.getScreenX(), mouseEvent.getScreenY()); 
      } 
     } 
    }); 
      chartItem1.setOnAction(new EventHandler<ActionEvent>() { 
       @Override 
       public void handle(ActionEvent t) { 
        dialogs.ChartFormat cs = new dialogs.ChartFormat(null, true);     
        cs.setLocationRelativeTo(null); 
        cs.setVisible(true);     
       } 
       }); 
+0

你可以請張貼一些代碼給你的問題。我使用[this javadoc]中的代碼製作了一個演示應用程序(http://docs.oracle.com/javafx/2.0/api/javafx/embed/swing/JFXPanel.html),並在場景中添加了「ContextMenu」控件。它在JavaFX 2.0.1中爲我工作。 – 2012-04-03 10:43:46

回答

1

轉載描述的行爲。不知道的原因,但你可以用ContextMenu#hide()

final ContextMenu cm = new ContextMenu(); 

MenuItem menuItem = new MenuItem("Item 1"); 
menuItem.addEventHandler(EventType.ROOT, new EventHandler<Event>() { 

     @Override 
     public void handle(Event t) { 
      SwingUtilities.invokeLater(new Runnable() { 

       @Override 
       public void run() { 
        JPanel messagePane = new JPanel(); 
        messagePane.add(new JLabel("label")); 
        JDialog jDialog = new JDialog(); 
        jDialog.getContentPane().add(messagePane); 
        jDialog.pack(); 
        jDialog.setVisible(true); 
       } 
      }); 
     } 
    }); 
cm.getItems().add(menuItem); 

scene.setOnMouseReleased(new EventHandler<MouseEvent>() { 
    @Override 
      public void handle(MouseEvent mouseEvent) { 
       // if(cm.isShowing()) 
       cm.hide(); 
       if (mouseEvent.getButton() == MouseButton.SECONDARY) { 
        cm.show(lineChart, mouseEvent.getScreenX(), mouseEvent.getScreenY()); 
       } 
      } 
     }); 

您也可以查看以下鏈接:
http://pixelduke.wordpress.com/2011/12/11/popupmenu-in-javafx/
http://javafx-jira.kenai.com/browse/RT-17853
http://javafx-jira.kenai.com/browse/RT-14899

添加示例代碼到你的問題會更多描述。

+0

謝謝Uluk,你的建議工作正常,但我仍然有一個問題: 如果我右鍵單擊我可以看到彈出窗口,並用左鍵單擊它消失的任何地方,所以一切都好。 我的彈出窗口有一個項目,通過在這個項目上點擊一個JDialog出現,這裏是問題:當我在彈出窗口中點擊這個項目時,對話框出現,但彈出窗口仍然存在。 – 2012-04-03 11:47:29

+0

更新了代碼和答案。當我點擊MenuItem時,JDialog顯示出來,ContextMenu消失。你使用的是什麼版本的javafx? – 2012-04-03 13:01:27

+0

我正在使用JavFX 2.0,NetBeans 7.1 – 2012-04-03 13:28:38