2013-02-05 56 views
0

我使用下面的代码来组合两个画布。扩展或增加水平滚动条宽度

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(); 

}

是否有可能增加水平滚动条的宽度(长度)如下所示 snapshot

回答

0

尝试移动您的滚动条,其保持两个帆布部件组件,所以你的水平滚动条可以负责它们两者的总宽度:

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); 
+0

是的,我可以这样做,但如果我隐藏水平第二个画布的ontal滚动条,并将水平滚动条添加到主要组合中,然后当我滚动主要组合的水平滚动条时,它会滚动第一个和第二个画布。我不想滚动第一个画布及其内容。我想冻结第一个画布,只有滚动应该发生在第二个画布上 –

+0

我误解了您的原始问题。你是说当第二个画布的水平滚动条不像画布本身那样宽时? – stracka