我有一个扩展Composite(AbstractWhiteBoard)的抽象类。然后我有一个扩展AbstractWhiteBoard的具体类。当我实例化具体类并尝试将其添加到RootPanel时,程序只是停止执行。没有错误或任何输出将我引导到日志文件。我不知道出了什么问题。
这是我的抽象类:
public abstract class AbstractWhiteBoard extends Composite {
/*
* FIELDS
*/
protected HorizontalPanel WhiteBoardWrapperPanel;
public AbstractWhiteBoard( ) {
WhiteBoardWrapperPanel = new HorizontalPanel();
WhiteBoardWrapperPanel.setStyleName("WhiteBoard-Wrapper");
initWidget(WhiteBoardWrapperPanel);
}
/*
* ABSTRACT PUBLIC METHODS
*/
abstract public void addNotecard( Notecard nc );
abstract public void addPostit( Postit postit );
/*
* ABSTRACT PROTECTED HELPER METHODS
*/
abstract protected void registerDragDropControllers();
}
这是我的具体实现类:
public class ConcreteWhiteBoard extends AbstractWhiteBoard {
/*
* CONTSTRUCTORS
*/
public ConcreteWhiteBoard() {
super();
}
/*
* PUBLIC METHOD OVERRIDES
*/
@Override
public void addNotecard(Notecard nc) {
// TODO Auto-generated method stub
}
@Override
public void addPostit(Postit postit) {
// TODO Auto-generated method stub
}
/*
* PRIVATE HELPER METHOD OVERRIDES
*/
@Override
protected void registerDragDropControllers() {
// TODO Auto-generated method stub
}
}
所以,发生了什么,我有这个代码:
AbstractWhiteBoard wb = new ConcreteWhiteBoard();
RootPanel.get().add(wb);
Window.alert("wb added!");
但是在将wb添加到RootPanel后,执行停止。警报语句甚至从未被调用过。没有错误,我在日志中看不到任何内容。
有一个扩展Composite的抽象类有什么问题吗?或者它是完全不同的东西,我只是没有看到?非常感谢任何帮助!
答案 0 :(得分:1)
看看gwt中未捕获的异常处理程序。如果发生运行时异常,则调用它。可以把它想象成一个围绕代码的全局尝试。
但是如果你的代码在模块加载的入口点内,请确保设置未捕获的异常处理程序并调用计时器中的下一个函数(以便未捕获的异常处理程序处于活动状态。
快速举例来看看:
在Web模式下,您可以打开模拟堆栈(并获得有意义的堆栈跟踪)。你需要将它添加到你的gwt.xml文件中(仅用于调试目的,因为它很慢):
<set-property name="compiler.emulatedStack" value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers" value="true" />
<set-configuration-property name="compiler.emulatedStack.recordFileNames" value="true" />
答案 1 :(得分:0)
所以,这是你觉得有史以来最迟钝的开发者的那个时代之一。发生的事情是我同时运行了几个异步调用,我试图在实际创建之前引用其中一个调用返回的对象。对我来说,我对异步线程感到困惑。
非常感谢丹尼尔。您的意见引导我直接解决问题!