簡體   English   中英

在ScrolledComposite中顯示內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM