标签: scrolledcomposite

ScrolledComposite父级使用GridLayout

我希望ScrolledComposite有一个父母有一个GridLayout但滚动条没有显示,除非我使用FillLayout.我的问题FillLayout是它的孩子占用了可用空间的相等部分.

在我的情况下,有两个小部件,顶部的一个小部件应该占不到窗口的1/4,并且ScrolledComposite应该占用剩余空间.但是,它们都占了一半.

有没有办法使用GridLayoutwith ScrolledComposite或是否可以修改行为FillLayout

这是我的代码:

private void initContent() {

    //GridLayout shellLayout = new GridLayout();
    //shellLayout.numColumns = 1;
    //shellLayout.verticalSpacing = 10;
    //shell.setLayout(shellLayout);
    shell.setLayout(new FillLayout(SWT.VERTICAL));

    searchComposite = new SearchComposite(shell, SWT.NONE);
    searchComposite.getSearchButton().addListener(SWT.Selection, this);

    ScrolledComposite scroll = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
    scroll.setLayout(new GridLayout(1, true));

    Composite scrollContent = new Composite(scroll, SWT.NONE);
    scrollContent.setLayout(new GridLayout(1, true));

    for (ChangeDescription description : getChanges(false)) {
        ChangesComposite cc = new ChangesComposite(scrollContent, description);
    } …
Run Code Online (Sandbox Code Playgroud)

java swt scrolledcomposite

7
推荐指数
1
解决办法
4850
查看次数

SWT:使用ScrolledComposite的嵌套布局超出可用空间

我想使用SWT为我的一个应用程序构建一个Master-Detail布局.

Container,Content,Sidebar和Part1是Composite实例.滚动是ScrolledComposite

所需的布局是这样的:

+--Container-------------------------------------+
|+--Content----------------------++--Sidebar----+|
||                               ||+--Part1----+||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               ||+-----------+||
||                               ||+--Scrolled-+||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               |||           |||
||                               ||+-----------+||
|+-------------------------------++-------------+|
+------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

内容应该可以水平和垂直地抓取所有空间.

侧边栏基本上是Part1和Scrolled的容器,它应该具有相同的高度.

Scrolled是Composite的容器,包含动态数量的子项,这些子项排列在内容合成中.因为子项的数量可能有很大的变化,所以这个Composite应该是可滚动的.

我现在用以下方式实现了这个:

  • Container有一个包含2个列的GridLayout.

  • 在内部,内容具有FILL_BOTH行为并且还获取所有HORIZONTAL/VERTICAL空间.

  • 侧边栏有一个FillLayout(SWT.VERTICAL),包含Part1和Scrolled Childs.

问题: 当将大量项目放入滚动的复合材料中时,布局只会溢出可用空间,并且没有滚动可用的位置.

当我对容器使用FillLayout(SWT.HORIZONTAL)时,行为是所希望的,因为滚动并且一切都是"内部边界".

有没有办法在使用GridLayout时实现此行为,因为我希望内容占用大部分空间.

附上当前测试的SWT片段:

public class Scrolled {
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);
        shell.setLayout(new GridLayout(2,false)); …
Run Code Online (Sandbox Code Playgroud)

java layout swt grid-layout scrolledcomposite

6
推荐指数
1
解决办法
5670
查看次数

SWT Composite最大尺寸

我有一个ScrolledComposite,其内容被截断.我用谷歌搜索,并意识到它是Windows上的一个已知问题.

我能找到的唯一建议的解决方法是使用canvas.scroll功能.

鉴于问题的年龄,我想知道是否有更好的解决方法?

谢谢!

(编辑:在撰写本文时,链接是:http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet48.java ?view = markup&content-type = text%2Fvnd.viewcvs-markup&revision = HEAD)

size swt composite scrolledcomposite

5
推荐指数
1
解决办法
4077
查看次数

在滚动复合中使用GridLayout

我正在尝试创建一个滚动的复合材料,其中包含一个内部网格布局的复合材料.

但是,当我尝试设置滚动复合的内容时,没有任何加载.这似乎只会影响具有网格布局的复合材料.

我究竟做错了什么?

我的代码:

    CTabItem tbtmNotes = new CTabItem(tabFolder, SWT.NONE);
    tbtmNotes.setText("Notes");
    ScrolledComposite scrollComposite = new ScrolledComposite(tabFolder, SWT.V_SCROLL | SWT.BORDER);
    tbtmNotes.setControl(scrollComposite);
    scrollComposite.setContent(new hm_Composites.Comp_Animal_Notes(tabFolder, SWT.None, a));
Run Code Online (Sandbox Code Playgroud)

java swt composite scrolledcomposite

5
推荐指数
2
解决办法
8408
查看次数

将完整滚动的合成导出到图像

我想将完整滚动的合成导出到图像。我的意思是整个复合材料,而不仅仅是复合材料的可见区域。我找到了这个例子:

        Image drawable = new Image(display, someComposite.getBounds());
        GC gc = new GC(drawable);
        mainWidget.print(gc);
        ImageLoader loader = new ImageLoader();
        loader.data = new ImageData[] {drawable.getImageData()};
        loader.save("exportedImage.bmp", SWT.IMAGE_BMP);
        drawable.dispose();
        gc.dispose(); 
Run Code Online (Sandbox Code Playgroud)

但输出是滚动复合的可见区域。:( 并不是全部,我猜是因为该.getBound()方法,但我找不到将其切换到另一种方法的方法。我尝试过,.getClientArea()但没有成功...

预先感谢,约西。

java swt image scrolledcomposite

5
推荐指数
1
解决办法
1380
查看次数

在 SWT 中将 ScrolledComposite 的 ScrollBar 可见性设置为 false

我有两个ScrolledComposites,我正在像这样同步它们的垂直滚动位置:

final ScrollBar vScroll1 = canvasScroll.getVerticalBar();
final ScrollBar vScroll2 = titleScroll.getVerticalBar();

vScroll1.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
        titleScroll.setOrigin(titleScroll.getOrigin().x, canvasScroll.getOrigin().y);
    }
});

vScroll2.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
        canvasScroll.setOrigin(canvasScroll.getOrigin().x, titleScroll.getOrigin().y);
    }
});
Run Code Online (Sandbox Code Playgroud)

这工作正常,除了它显示了两者的滚动条ScrolledComposites。我只希望 oneScrolledComposite的滚动条可见,因此我将其可见性之一设置为 false:

vScroll2.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

这没有效果。我也尝试在ScrolledComposite没有SWT.V_SCROLL标志的情况下实例化,但这会在运行上述代码时导致空指针异常。滚动条确实需要在那里,我只是希望它不可见。那可能吗?

java swt scrolledcomposite

3
推荐指数
1
解决办法
835
查看次数

标签 统计

scrolledcomposite ×6

swt ×6

java ×5

composite ×2

grid-layout ×1

image ×1

layout ×1

size ×1