我在创建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)
答案 0 :(得分:1)
从异常看,您似乎正在尝试从W3C的Java API for Java API中将JavaFX MenuItem
对象转换为Element
类型。这没有任何意义。如果没有演员表,如果你所追求的是MenuItem
的价值,它是否有效?尝试将其投放到MenuItem
而不是Element
。
编辑:
好好仔细看看它。看起来它应该是这样的,如果你想要的是属性text
的文本值:
String value = ((MenuItem)evt.getTarget()).getText();