Java 如何在SWT中使用FormLayout使按钮居中?
如何使用Java 如何在SWT中使用FormLayout使按钮居中?,java,swt,Java,Swt,如何使用表单布局将按钮(垂直)放置在中心位置(请参见)?使用: 我最终得到了 这并不奇怪,因为我告诉它把按钮的顶部放在中间(layoutData.top=newformattachment(50);)。如何将按钮的中心置于中心?您可以使用构造函数指定偏移: new FormAttachment(int numerator, int offset) 看起来像这样: 可以使用以下公式计算偏移: final Button button = new Button(shell, SWT.NONE);
表单布局将按钮(垂直)放置在中心位置(请参见)?使用:
我最终得到了
这并不奇怪,因为我告诉它把按钮的顶部放在中间(layoutData.top=newformattachment(50);
)。如何将按钮的中心置于中心?您可以使用构造函数指定偏移:
new FormAttachment(int numerator, int offset)
看起来像这样:
可以使用以下公式计算偏移:
final Button button = new Button(shell, SWT.NONE);
button.setText("Button");
final FormData layoutData = new FormData();
/* Compute the offset */
int offset = -button.computeSize(SWT.DEFAULT, SWT.DEFAULT).y / 2;
/* Create the FormAttachment */
layoutData.top = new FormAttachment(50, offset);
layoutData.left = new FormAttachment(0);
layoutData.right = new FormAttachment(100);
button.setLayoutData(layoutData);
如果调整窗口的大小,此操作将不起作用。我想您需要某种调整大小的侦听器,然后重新计算偏移量。哦,好吧,只使用带有单个网格和GridData的GridLayout(GridData.CENTER,GridData.CENTER,true,true)可能更容易。@NeemePraks不,你不需要监听调整大小事件。formattachment
使用百分比。只有当按钮的高度发生变化时,才需要对其进行更新,而这通常不会发生变化。
final Button button = new Button(shell, SWT.NONE);
button.setText("Button");
final FormData layoutData = new FormData();
/* Compute the offset */
int offset = -button.computeSize(SWT.DEFAULT, SWT.DEFAULT).y / 2;
/* Create the FormAttachment */
layoutData.top = new FormAttachment(50, offset);
layoutData.left = new FormAttachment(0);
layoutData.right = new FormAttachment(100);
button.setLayoutData(layoutData);