拖放Swing到JavaFX在没有调试模式的情况下不工作
我有一个从Swing应用程序获取拖动事件的代码。然后,代码将元素放入JavaFX表视图中 如果我在调试模式下运行,这段代码可以完美地工作。但是,如果调试失败,它将无法工作拖放Swing到JavaFX在没有调试模式的情况下不工作,javafx,drag-and-drop,Javafx,Drag And Drop,我有一个从Swing应用程序获取拖动事件的代码。然后,代码将元素放入JavaFX表视图中 如果我在调试模式下运行,这段代码可以完美地工作。但是,如果调试失败,它将无法工作 private static final DataFormat customFormat = new DataFormat("application/x-java-serialized-object"); this.setOnDragOver(new EventHandler<DragEvent>() {
private static final DataFormat customFormat = new DataFormat("application/x-java-serialized-object");
this.setOnDragOver(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
event.acceptTransferModes(TransferMode.ANY);
event.consume();
}
});
this.setOnDragDropped(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
try {
Dragboard db = event.getDragboard();
if (db == null) {
alertInfo();
} else {
MyClassObject res = (MyClassObject) db.getContent(customFormat);
// do stuffs
} catch (Exception e) {
LOGGER.error(e.getMessage());
} finally {
event.setDropCompleted(true);
event.consume();
}
}
}
private static final DataFormat customFormat=new DataFormat(“应用程序/x-java-serialized-object”);
this.setOnDragOver(新的EventHandler()){
公共无效句柄(DrageEvent事件){
event.acceptTransferModes(TransferMode.ANY);
event.consume();
}
});
this.setOnDragDrop(新的EventHandler()){
公共无效句柄(DrageEvent事件){
试一试{
Dragboard db=event.getDragboard();
if(db==null){
alertInfo();
}否则{
MyClassObject res=(MyClassObject)db.getContent(customFormat);
//做事
}捕获(例外e){
LOGGER.error(例如getMessage());
}最后{
事件。setDropCompleted(true);
event.consume();
}
}
}
我知道错误在“MyClassObject res=(MyClassObject)db.getContent(customFormat);”行中,因为失败时返回的异常是“java.lang.String不能转换为MyClassObject”
但是,在调试中不会发生此错误。强制转换成功
有人经历过吗?它似乎与Java缓存有关。
清除Java控件中的所有缓存后,代码将正确运行。它似乎与Java缓存相关。 清除Java控件中的所有缓存后,代码将正确运行