0

以下のコードを使用して、2つのキャンバスを組み合わせました。

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

Composite mainComp = new Composite(shell, SWT.NONE);
GridLayout layout = new GridLayout(2, false);

layout.horizontalSpacing = 0;

mainComp.setLayout(layout);
mainComp.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, true, true));

final Canvas hwCanvas = new Canvas(mainComp, SWT.NO_REDRAW_RESIZE | SWT.V_SCROLL);
hwCanvas.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
hwCanvas.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
hwCanvas.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, false, true));
hwCanvas.getVerticalBar().setVisible(false);

final Canvas traceCanvas = new Canvas(mainComp, SWT.NO_REDRAW_RESIZE | SWT.H_SCROLL | SWT.V_SCROLL);
traceCanvas.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
traceCanvas.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
traceCanvas.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, true, true));

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

}

ここに示すスナップショットのように、水平スクロールバーの幅(長さ)を増やすことは可能ですか?

4

1 に答える 1

0

スクロールバーを2つのキャンバスコンポーネントを保持するコンポーネントに移動してみてください。そうすれば、水平スクロールバーが両方のコンポーネントの合計幅を管理できるようになります。

Composite mainComp = new Composite(shell, SWT.H_SCROLL | SWT.V_SCROLL);
:
final Canvas hwCanvas = new Canvas(mainComp, SWT.NO_REDRAW_RESIZE);
:
final Canvas traceCanvas = new Canvas(mainComp, SWT.NO_REDRAW_RESIZE);
于 2013-02-05T15:41:00.787 に答える