设置Java SWT Shell窗口内部区域的大小
在Java SWT Shell窗口中,如何设置其内部大小而不是其整个窗口框架大小?
例如,如果我使用shell.setSize(300,250),这将使整个窗口显示为恰好为300x250。此300x250包括窗口框架的大小。
如何设置内部尺寸,也就是将Shell窗口的内容显示区域改为300x250?这就是300x250,不包括窗口框架的宽度。
我尝试减去一些偏移值,但问题是不同的操作系统具有不同的窗口框架大小。因此,具有恒定的偏移量将不准确。
谢谢。
回答:
从您的问题中,我了解到您想设置的尺寸Client Area
。在SWT术语中,其定义为 a rectangle which describes the
area of the receiver which is capable of displaying data (that is, not covered
by the "trimmings").
您无法直接设置的尺寸,Client Area
因为没有API。虽然您可以通过一点技巧来实现。在下面的示例代码中,我希望我的客户区域是 。为此,我使用了shell.addShellListener()
事件监听器。当外壳完全处于活动状态时(请参阅参考资料 public
void shellActivated(ShellEvent e)
),我将计算出不同的边距,然后再次设置外壳的大小。外壳尺寸的计算和重置为我提供了所需的外壳尺寸。
import org.eclipse.swt.SWT;import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.events.ShellListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
public class MenuTest {
public static void main (String [] args)
{
Display display = new Display ();
final Shell shell = new Shell (display);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.horizontalSpacing = 0;
layout.verticalSpacing = 0;
layout.numColumns = 1;
shell.setLayout(layout);
shell.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,true));
final Menu bar = new Menu (shell, SWT.BAR);
shell.setMenuBar (bar);
shell.addShellListener(new ShellListener() {
public void shellIconified(ShellEvent e) {
}
public void shellDeiconified(ShellEvent e) {
}
public void shellDeactivated(ShellEvent e) {
}
public void shellClosed(ShellEvent e) {
System.out.println("Client Area: " + shell.getClientArea());
}
public void shellActivated(ShellEvent e) {
int frameX = shell.getSize().x - shell.getClientArea().width;
int frameY = shell.getSize().y - shell.getClientArea().height;
shell.setSize(300 + frameX, 250 + frameY);
}
});
shell.open ();
while (!shell.isDisposed()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}
以上是 设置Java SWT Shell窗口内部区域的大小 的全部内容, 来源链接: utcz.com/qa/416632.html