我有这样的向导列表:
list = new List(sashForm2, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL);
如果“我的列表”为空,“常规向导”窗口的大小正常。但在添加了一些项目之后:
for (int i = 0; i < 15; i++) {
fTypeArrayList.add(new FirstTypeMD(new Random().nextInt(2000) + 500, new Random().nextInt(2000),
new Random().nextInt(200) + 20, new Random().nextBoolean(), new Random().nextBoolean(),
new Random().nextInt(200)));
sTypeArrayList.add(new SecondTypeMD(new Random().nextInt(2000) + 500, new Random().nextInt(2000),
new Random().nextInt(200) + 20, new Random().nextBoolean(), new Random().nextBoolean(),
new Random().nextInt(200) + 5, new Random().nextInt(100) + 5));
thTypeArrayList.add(new ThirdTypeMD(new Random().nextInt(2000) + 500, new Random().nextInt(2000),
new Random().nextInt(200) + 20, new Random().nextBoolean(), new Random().nextBoolean(),
new Random().nextInt(3) + 1, new Random().nextInt(3) + 1));
FirstTypeMD fModeMd = fTypeArrayList.get(i);
SecondTypeMD sModeMd = sTypeArrayList.get(i);
ThirdTypeMD thModeMd = thTypeArrayList.get(i);
list.add("T0 ---> " + fModeMd.energyCons + " " + fModeMd.framePerSec + " " + fModeMd.mass + " "
+ fModeMd.tempRange);
list.add("T1 ---> " + sModeMd.energyCons + " " + sModeMd.speed + " " + sModeMd.sensorAmount + " "
+ sModeMd.mass + " " + sModeMd.tempRange);
list.add("T2 ---> " + thModeMd.energyCons + " " + thModeMd.displayDiff + " " + thModeMd.dataProcess + " "
+ thModeMd.mass + " " + thModeMd.tempRange);
}
我的向导窗口比eclipse窗口高。我尝试添加一些布局大小:
list.setSize(100, 300);
也像这样:
GridData gridData = new GridData(GridData.FILL, GridData.FILL, true, true);
gridData.verticalSpan = 4;
int listHeight = list.getItemHeight() * 12;
Rectangle trim = list.computeTrim(0, 0, 0, listHeight);
gridData.heightHint = trim.height;
list.setLayoutData(gridData);
但这无助于我解决这个问题。也许我做错了?也许我必须为它的容器设置固定的大小:
SashForm sashForm = new SashForm(control, SWT.CENTER);
SashForm sashForm2 = new SashForm(sashForm, SWT.VERTICAL);
正如你所看到的,我必须把一个放在另一个里面。逻辑得到批准,但尺寸会给用户带来一些视觉上的困难:(
1条答案
按热度按时间e1xvtsh31#
您的列表似乎是
SashForm
.SashForm
不使用GridLayout
所以设置GridData
列表上的布局数据无效。呼叫setSize
方法也不起作用,因为SashForm
将根据自己的计算设置大小。你可以尝试添加一个
Composite
作为孩子的直系亲属SashForm
. 添加列表作为该列表的子级Composite
. 套GridLayout
作为Composite
然后是GridData.heightHint
应该使用。可能是以下情况(未测试):