[英]Display content in ScrolledComposite
我想創建一個用戶可以放大和縮小的視圖,因此我計划使用ScrolledComposite
實現該視圖:
ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
sc.setBounds(0, 0, 200, 200);
問題是:當內容的大小小於滾動組合的大小時,即使我嘗試了控件的setBounds()
方法或滾動組合的setOrigin()
,它也始終出現在滾動組合的左上角。 在下面的示例中, button
(100,50)的顯示區域內容小於sc
(200,200)的客戶區域,即使我嘗試為其設置一些位置,按鈕也始終顯示在左上角顯示在滾動的合成中。
Button button = new Button(sc, SWT.PUSH);
button.setText("Button");
button.setBounds(50, 50, 100, 50);
sc.setContent(button);
sc.setOrigin(30, 30);
我得到的結果是
我該如何解決這個問題?
這里的技巧是在ScrolledComposite
中使用另一個Composite
,它將包含您的按鈕以及可能的其他內容。 在內部或內容Composite
您可以靈活地根據需要放置子級。 ScrollComposite
不使用布局,因此您無法控制子項的放置。 就像TabItem
僅允許您設置setContent
但不允許其放置一樣。
ScrolledComposite sc = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
sc.setBounds(0, 0, 200, 200);
Composite content = new Composite(sc, SWT.NONE);
content.setSize(300, 300);
sc.setContent(content);
Button button = new Button(content, SWT.PUSH);
button.setText("Button");
button.setBounds(50, 50, 100, 50);
您可以以任何喜歡的方式使用content
組合來布局子級。 現在,您還可以在內容組合上使用您選擇的布局,以確保按鈕始終保持居中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.