有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java组织。日食swt。小部件。组,这个类可以被滚动吗

org.eclipse.swt.widgets.Group继承自Composite,后者继承自Scrollable。但是,当我调用继承的方法getVerticalScrollBar()时,它总是返回null

是否可以使Group可滚动?如果可能,怎么做

顺便说一句,Group包含许多org.eclipse.swt.widgets.Button.Button样式为SWT.CHECK


共 (2) 个答案

  1. # 1 楼答案

    SWT的Javadoc表示:

    Returns the receiver's vertical scroll bar if it has one, and null if it does not.

    如果用户使窗口/对话框变小,则会出现滚动条。只有这样,方法getVerticalScrollBar()getHorizontalScrollBar()才会返回非空值。在这个问题上,您必须始终检查null。这就是SWT的建造方式

    编辑:尝试在CompositeShell上调用getVerticalScrollBar()方法

  2. # 2 楼答案

    我认为你不能让Group本身滚动。但是,我通过在Group中添加一个^{}实现了相同的效果:

    group = new Group(parent, SWT.NONE);
    group.setText("Images: ");
    group.setLayout(new FillLayout());
    
    ScrolledComposite comp = new ScrolledComposite(group, SWT.V_SCROLL | SWT.H_SCROLL);
    comp.setLayout(new FillLayout());
    
    Composite innerComp = new Composite(comp, SWT.NONE);
    innerComp.setLayout(new FillLayout());
    
    comp.setContent(innerComp);
    comp.setExpandHorizontal(true);
    comp.setExpandVertical(true);
    

    之后,您可以将Button添加到Composite{}。可能需要在ScrolledComposite上使用setMinHeight(int height)setMinWidth(int width)

    编辑

    下面是一个小的工作示例。如果减小窗口的大小,您将看到滚动条将出现:

    public static void main(String[] args)
    {
        Display display = Display.getDefault();
        Shell shell = new Shell(display);
    
        shell.setLayout(new FillLayout());
    
        Group imageGroup = new Group(shell, SWT.V_SCROLL | SWT.H_SCROLL);
        imageGroup.setText("Images: ");
        imageGroup.setLayout(new FillLayout());
    
        ScrolledComposite frontComp = new ScrolledComposite(imageGroup, SWT.V_SCROLL | SWT.H_SCROLL);
        Composite innerFrontComp = new Composite(frontComp, SWT.NONE);
        frontComp.setLayout(new FillLayout());
    
        innerFrontComp.setLayout(new FillLayout());
    
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
        new Button(innerFrontComp, SWT.CHECK).setText("Button");
    
        frontComp.setMinHeight(innerFrontComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
        frontComp.setMinWidth(innerFrontComp.computeSize(SWT.DEFAULT, SWT.DEFAULT).x);
        frontComp.setContent(innerFrontComp);
        frontComp.setExpandHorizontal(true);
        frontComp.setExpandVertical(true);
    
        shell.pack();
        shell.open();
    
        while(!shell.isDisposed())
        {
            if(!display.readAndDispatch())
                display.sleep();
        }
    }