如何处理Javafx org.w3c.dom.Element强制转换为MenuItem错误?

时间:2015-12-05 14:42:06

标签: java javafx webview

我在创建WebView的上下文菜单时遇到问题。

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,因为我需要能够动态创建新的和不同的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 个答案:

答案 0 :(得分:1)

从异常看,您似乎正在尝试从W3C的Java API for Java API中将JavaFX MenuItem对象转换为Element类型。这没有任何意义。如果没有演员表,如果你所追求的是MenuItem的价值,它是否有效?尝试将其投放到MenuItem而不是Element

编辑:

好好仔细看看它。看起来它应该是这样的,如果你想要的是属性text的文本值:

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