我使用以下代码将ScrollPane中的小程序包含到我的eclipse插件的视图中:
@Override
public void createPartControl(Composite parent) {
composite = new Composite(parent, SWT.EMBEDDED);
final Frame frame = SWT_AWT.new_Frame(composite);
frame.setLayout(new BorderLayout());
Panel panel = new Panel();
panel.setSize(WIDTH, HEIGHT);
pap = new ProcessingEmbedded2();
ScrollPane pane = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
panel.setLayout(new BorderLayout());
panel.add(pap, BorderLayout.CENTER);
frame.add(pane, BorderLayout.CENTER);
pane.add(panel);
}
public class ProcessingEmbedded2 extends Applet {
}
对于插件开发人员来说,这在Eclipse RPC/中运行得很好,但现在我尝试在另一个eclipse客户机中运行该插件。在那里,ScrollPane导致插件冻结整个客户端。我确定它是ScrollPane,因为如果我删除这部分代码(即,我直接将小程序添加到面板中,而不使用ScrollPane),插件就会正常运行。有人知道导致冻结的问题是什么吗?
发布于 2012-01-22 06:27:48
您似乎遇到了特定于平台的问题图形用户界面问题,这是由尝试创建ScrollPane的系统特别引起的。
您运行的测试是一个很好的测试-删除ScrollPane来挽救崩溃肯定意味着这个问题与GUI组件相关……或者ScrollPane所依赖的某个组件。
那么下一个问题是- ScrollPane是用什么来构建自己的呢?答案当然是AWT --即java抽象窗口工具包。
不幸的是,由于AWT组件与系统组件捆绑在一起,您可能会遇到一些情况,在这些情况下,它们不能很好地工作。在这种情况下该怎么办?一个简单的解决方案是尝试使用Swing组件。
所以,既然我假设你在这里使用的是AWT的ScrollPane -,我建议你把它换成Swing JScrollPane。根据我的经验,Swing组件不太可能导致这样的怪癖。但是,每个工具包都有优缺点。但根据我的经验..。通常,如果您的程序在AWT组件上崩溃,相应的Swing组件可能会工作得更好。
请参阅:http://edn.embarcadero.com/article/26970
https://stackoverflow.com/questions/8838674
复制相似问题