Java SWT创建两个串联滚动的StyledText

Java SWT创建两个串联滚动的StyledText,java,swt,scrollbar,styledtext,tandem,Java,Swt,Scrollbar,Styledtext,Tandem,我必须创建两个串联滚动的StyledText,我得到的只是使用scrolled composites创建相同的代码。我使用StyledText的限制仅仅是因为,我还将其用于其他目的。 我想创建相同的东西,但使用StyledText 我尝试用StyledText替换scrolled composites,但它不允许我setOrigin(x,y) 您可以使用方法StyledText#setHorizontalPixel()和StyledText#settopixel()(及其相应的get方法)获取和

我必须创建两个串联滚动的
StyledText
,我得到的只是使用
scrolled composites
创建相同的代码。我使用
StyledText
的限制仅仅是因为,我还将其用于其他目的。 我想创建相同的东西,但使用
StyledText


我尝试用
StyledText
替换
scrolled composites
,但它不允许我
setOrigin(x,y)

您可以使用方法
StyledText#setHorizontalPixel()
StyledText#settopixel()
(及其相应的
get
方法)获取和设置位置:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    StyledText one = new StyledText(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    StyledText two = new StyledText(shell, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);

    one.setAlwaysShowScrollBars(true);
    two.setAlwaysShowScrollBars(true);

    one.setText("Scroll scroll scroll\ndown down down\nto to to\nsee see see\nthe the the\nstyled styled styled\ntexts texts texts\nscroll scroll scroll\nin in in\ntandem tandem tandem");
    two.setText("Scroll scroll scroll\ndown down down\nto to to\nsee see see\nthe the the\nstyled styled styled\ntexts texts texts\nscroll scroll scroll\nin in in\ntandem tandem tandem");

    handleVerticalScrolling(one, two);
    handleHorizontalScrolling(one, two);

    shell.pack();
    shell.setSize(200, 100);
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

private static void handleHorizontalScrolling(StyledText one, StyledText two)
{
    ScrollBar hOne = one.getHorizontalBar();
    ScrollBar hTwo = two.getHorizontalBar();

    hOne.addListener(SWT.Selection, e -> {
        int x = one.getHorizontalPixel();
        two.setHorizontalPixel(x);
    });
    hTwo.addListener(SWT.Selection, e -> {
        int x = two.getHorizontalPixel();
        one.setHorizontalPixel(x);
    });
}

private static void handleVerticalScrolling(StyledText one, StyledText two)
{
    ScrollBar vOne = one.getVerticalBar();
    ScrollBar vTwo = two.getVerticalBar();

    vOne.addListener(SWT.Selection, e ->
    {
        int y = one.getTopPixel();
        two.setTopPixel(y);
    });
    vTwo.addListener(SWT.Selection, e ->
    {
        int y = two.getTopPixel();
        one.setTopPixel(y);
    });
}