Java SWT:setSize() 不适用于 Button 控件
Java SWT: setSize() not working on Button control
我有一个按钮的 ArrayList,我试图将所有按钮设置为与最后一个按钮相同的大小。
这是我的代码:
ArrayList <Button> buttons = new ArrayList<Button>();
Composite numbersComposite = new Composite(composite, SWT.NONE);
numbersComposite.setLayout(new GridLayout(5, true));
for (int i=0; i<=49; i++) {
Button b = new Button(numbersComposite, SWT.TOGGLE);
b.setText(""+i);
buttons.add(b);
}
for (Button b : buttons) {
b.setSize(buttons.get(buttons.size()-1).getSize());
}
出了点问题,因为并非所有按钮的大小都相同。 TOGGLE风格的Buttons的setSize方法有问题吗?
编辑
我看到 buttons.get(buttons.size()-1).getSize()
给出了一个值为 0,0 的点。为什么?
编辑 2
我尝试使用此代码但没有任何反应!并非所有人都具有相同的大小。这是为什么?
Point point = new Point(20, 20);
for (Button b : buttons) {
b.setSize(point);
}
您将布局与绝对定位混合在一起,这是行不通的。
setSize
仅在您不使用布局时有效。
如果您正在使用布局(这通常是最佳选择),那么您应该为要显示的组件设置适当的布局数据。
由于您使用 GridLayout
作为父级 Composite
,其子级应将 GridData
设置为布局数据;例如,此 GridData
将使按钮使用父级 Composite
:
中所有可用的 space
for (int i = 0; i <= 49; i++) {
Button b = new Button(numbersComposite, SWT.TOGGLE);
// set the layout data
GridData buttonLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
b.setLayoutData(buttonLayoutData);
b.setText("" + i);
buttons.add(b);
}
查看 GridData
的构造函数以查看您还有哪些其他选项。
查看此处以了解有关 SWT 中布局的更多信息:http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html
我有一个按钮的 ArrayList,我试图将所有按钮设置为与最后一个按钮相同的大小。
这是我的代码:
ArrayList <Button> buttons = new ArrayList<Button>();
Composite numbersComposite = new Composite(composite, SWT.NONE);
numbersComposite.setLayout(new GridLayout(5, true));
for (int i=0; i<=49; i++) {
Button b = new Button(numbersComposite, SWT.TOGGLE);
b.setText(""+i);
buttons.add(b);
}
for (Button b : buttons) {
b.setSize(buttons.get(buttons.size()-1).getSize());
}
出了点问题,因为并非所有按钮的大小都相同。 TOGGLE风格的Buttons的setSize方法有问题吗?
编辑
我看到 buttons.get(buttons.size()-1).getSize()
给出了一个值为 0,0 的点。为什么?
编辑 2
我尝试使用此代码但没有任何反应!并非所有人都具有相同的大小。这是为什么?
Point point = new Point(20, 20);
for (Button b : buttons) {
b.setSize(point);
}
您将布局与绝对定位混合在一起,这是行不通的。
setSize
仅在您不使用布局时有效。
如果您正在使用布局(这通常是最佳选择),那么您应该为要显示的组件设置适当的布局数据。
由于您使用 GridLayout
作为父级 Composite
,其子级应将 GridData
设置为布局数据;例如,此 GridData
将使按钮使用父级 Composite
:
for (int i = 0; i <= 49; i++) {
Button b = new Button(numbersComposite, SWT.TOGGLE);
// set the layout data
GridData buttonLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
b.setLayoutData(buttonLayoutData);
b.setText("" + i);
buttons.add(b);
}
查看 GridData
的构造函数以查看您还有哪些其他选项。
查看此处以了解有关 SWT 中布局的更多信息:http://www.eclipse.org/articles/article.php?file=Article-Understanding-Layouts/index.html