2013-02-05 59 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