在 SWT 中将 FillLayout 与浏览器一起使用
Use FillLayout with Browser in SWT
我有一个由标题和浏览器组成的视图。我希望浏览器填充我的视图。它应该是这样的:
我尝试了不同的组合。
c = new Composite(parent, SWT.NONE);
c.setLayout(new RowLayout(SWT.VERTICAL));
Label l = new Label(c, SWT.NONE);
l.setBackground(color);
l.setText("----------------------Heading--------------------------------");
l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));
Composite wrapper = new Composite(c, SWT.NONE);
wrapper.setBackground(new Color(null, 0, 0, 0));
wrapper.setLayout(new FillLayout(SWT.VERTICAL));
browser = new Browser(wrapper, SWT.WRAP);
browser.setBackground(color);
产生:
将 FillLayout 设置为 c
也不起作用。通过这样做,标题和浏览器共享视图的大小并具有相同的大小。
c = new Composite(parent, SWT.NONE);
c.setLayout(new FillLayout(SWT.VERTICAL));
Label l = new Label(c, SWT.NONE);
l.setBackground(color);
l.setText("----------------------Heading--------------------------------");
l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));
browser = new Browser(c, SWT.WRAP);
browser.setBackground(color);
产生:
我也试过以下方法:
composite with filllayout
-> composite with gridlayout
->composite with rowLayout (fixed height, grab right)
->composite with rowLayout
-> composite with fillLayout
-> composite with browser
假设 header 和浏览器具有相同的 parent,您可以像这样使用 GridLayout
:
parent.setLayout( new GridLayout( 1, false ) );
label.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
browser.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
尽管 one-cell-grid 并不是 GridLayout 的真正用途,但它应该可以解决问题。布局数据建议标签在顶部对齐并使用所有水平 space 和浏览器使用水平和垂直 space
我有一个由标题和浏览器组成的视图。我希望浏览器填充我的视图。它应该是这样的:
我尝试了不同的组合。
c = new Composite(parent, SWT.NONE);
c.setLayout(new RowLayout(SWT.VERTICAL));
Label l = new Label(c, SWT.NONE);
l.setBackground(color);
l.setText("----------------------Heading--------------------------------");
l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));
Composite wrapper = new Composite(c, SWT.NONE);
wrapper.setBackground(new Color(null, 0, 0, 0));
wrapper.setLayout(new FillLayout(SWT.VERTICAL));
browser = new Browser(wrapper, SWT.WRAP);
browser.setBackground(color);
产生:
将 FillLayout 设置为 c
也不起作用。通过这样做,标题和浏览器共享视图的大小并具有相同的大小。
c = new Composite(parent, SWT.NONE);
c.setLayout(new FillLayout(SWT.VERTICAL));
Label l = new Label(c, SWT.NONE);
l.setBackground(color);
l.setText("----------------------Heading--------------------------------");
l.setFont(new Font(null, new FontData(Constants.FONT, 12, SWT.BOLD)));
browser = new Browser(c, SWT.WRAP);
browser.setBackground(color);
产生:
我也试过以下方法:
composite with filllayout
-> composite with gridlayout
->composite with rowLayout (fixed height, grab right)
->composite with rowLayout
-> composite with fillLayout
-> composite with browser
假设 header 和浏览器具有相同的 parent,您可以像这样使用 GridLayout
:
parent.setLayout( new GridLayout( 1, false ) );
label.setLayoutData( new GridData( SWT.FILL, SWT.TOP, true, false ) );
browser.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true ) );
尽管 one-cell-grid 并不是 GridLayout 的真正用途,但它应该可以解决问题。布局数据建议标签在顶部对齐并使用所有水平 space 和浏览器使用水平和垂直 space