Java 如何仅当SWT视图在屏幕上滚动到时才加载它们?
我正在制作一个简单的甘特图小部件。它基本上只是一个具有自定义布局的组合。布局垂直排列所有子控件,以占据父组合的100%宽度,如下所示: 下面是以这种方式排列子控件的代码:Java 如何仅当SWT视图在屏幕上滚动到时才加载它们?,java,optimization,swt,Java,Optimization,Swt,我正在制作一个简单的甘特图小部件。它基本上只是一个具有自定义布局的组合。布局垂直排列所有子控件,以占据父组合的100%宽度,如下所示: 下面是以这种方式排列子控件的代码: public class GanttLayout extends Layout { int defaultWidth = 200; int width; int itemHeight; public GanttLayout(int x, int y) { width = x;
public class GanttLayout extends Layout {
int defaultWidth = 200;
int width;
int itemHeight;
public GanttLayout(int x, int y) {
width = x;
itemHeight = y;
}
@Override
protected Point computeSize(Composite composite, int wHint, int hHint, boolean changed) {
int height = itemHeight * composite.getChildren().length;
Point size = new Point(width == SWT.DEFAULT? defaultWidth: width, height + 2);
return size;
}
@Override
protected void layout(Composite composite, boolean changed) {
int i = 0;
for(Control control : composite.getChildren()) {
control.setBounds(0, i * itemHeight, width == SWT.DEFAULT? composite.getSize().x: width, itemHeight);
i++;
}
}
}
问题是,当添加数百个这样的子控件时,它们需要很长时间才能显示,然后在需要处置时处置所有控件需要很长时间。有没有办法让这更有效?也许有一种方法可以只在用户滚动到控件时显示控件,有点像虚拟表
.日食星云项目有一个beta版,它可以做你想做的事。还有Eclipse,我见过很多甘特图小部件,包括您链接的那个,但它们根本不符合我的要求。举个例子,和我需要的相比,这本书太复杂了,很难读懂。这是我决定创建自己的网站的唯一原因。