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)
我後面是menuItem的ActionEvent。基本上,我在WebView上設置了Listeners,當contextMenu被請求時,MenuItem被添加並且ActionEvent被設置,以便我可以捕獲WebView的目標部分。例如,這通常是HTML 。然後我可以根據MenuItem選擇獲取屬性。因此,例如INPUT的點擊,類型,名稱,類別,值等。 – Andy
如果我將MenuItem轉換爲evt,我將得到MenuItem的文本。這不是我需要的。這就是爲什麼我投了org.w3c.dom.Element。 – Andy
對不起。誤解。我只是專注於例外。在這種情況下,您正在聽錯事件。這裏返回的action事件是與'clickButton'關聯的ActionEvent。不與任何你的DOM對象。查看這個鏈接,瞭解如何監聽WebView中發生的事件。 [鏈接](http://blogs.kiyut.com/tonny/2013/07/30/javafx-webview-addhyperlinklistener/#.VmMI5_krLIU) – Pubudu