2015-12-05 36 views
0

我在爲WebView創建上下文菜單時遇到問題。如何處理Javafx org.w3c.dom.Element強制轉換爲MenuItem錯誤?

private void createContextMenuForButton(){ 
    MenuItem clickButton = new MenuItem("Click"); 
    clickButton.setOnAction(new EventHandler<ActionEvent>(){ 
     public void handle(ActionEvent evt){ 
      addStep(); 
      ListItem item = ListItem.getListView().getItems().get(ListItem.getListView().getItems().size()-1); 
      item.setComboBoxValue("Click"); 
      *String value = ((Element)evt.getTarget()).getAttribute("value").toString();* 
      item.getWindow(); 
     } 
    }); 
    listViewItemContextMenu.getItems().remove(0, listViewItemContextMenu.getItems().size()); 
    listViewItemContextMenu.getItems().add(clickButton); 
} 

當我運行上面的方法時出現以下異常。 190行標有*。無論我如何獲取ActionEvent的元素,它都會繼續出現錯誤。我無法創建@FXML MenuItem,因爲我需要能夠即時創建新的和不同的菜單項。

Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: javafx.scene.control.MenuItem cannot be cast to org.w3c.dom.Element 
     at model.WebBrowser$4.handle(WebBrowser.java:190) 
     at model.WebBrowser$4.handle(WebBrowser.java:1) 
     at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source) 
     at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source) 
     at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source) 
     at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source) 
     at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source) 

回答

1

從例外,它看起來像你正試圖從W3C從Java API蒙上了JavaFX的MenuItem對象的Element類型DOM。這沒有任何意義。如果沒有演員陣容,它不工作,如果你之後的是MenuItem的價值?嘗試將其轉換爲MenuItem而不是Element

編輯:

好吧有一個更仔細看看它。看起來像它應該是這樣的,如果你想要的是屬性的文本值text

String value = ((MenuItem)evt.getTarget()).getText(); 
+0

我後面是menuItem的ActionEvent。基本上,我在WebView上設置了Listeners,當contextMenu被請求時,MenuItem被添加並且ActionEvent被設置,以便我可以捕獲WebView的目標部分。例如,這通常是HTML 。然後我可以根據MenuItem選擇獲取屬性。因此,例如INPUT的點擊,類型,名稱,類別,值等。 – Andy

+0

如果我將MenuItem轉換爲evt,我將得到MenuItem的文本。這不是我需要的。這就是爲什麼我投了org.w3c.dom.Element。 – Andy

+0

對不起。誤解。我只是專注於例外。在這種情況下,您正在聽錯事件。這裏返回的action事件是與'clickButton'關聯的ActionEvent。不與任何你的DOM對象。查看這個鏈接,瞭解如何監聽WebView中發生的事件。 [鏈接](http://blogs.kiyut.com/tonny/2013/07/30/javafx-webview-addhyperlinklistener/#.VmMI5_krLIU) – Pubudu

相關問題