我有一個ScrolledComposite(SC)內的複合物(innerComposite)。在運行時,可以添加其他UI組件。因此,我使用下面的代碼來設置sc的最小大小以啓用滾動,以防其他UI組件「溢出」sc。SWT - computingSize爲多行文本字段內ScrolledComposite
sc.setMinSize(
innerComposite.computeSize(
innerComposite.getSize().x, SWT.DEFAULT
)
);
一個問題是在這個sc/innerComposite中的SWT多行文本框。
textBox = new org.eclipse.swt.widgets.Text(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
當我進入一個長的文本到這個多行文本框,垂直滾動條就會出現,(這是我想要的東西!)。但是,當我調用上面的代碼來重新計算大小並設置sc.setMinSize()時,多行文本字段的高度將擴展爲適合輸入文本的長度。這不是我想要的。我希望這個高度保持在滾動條上,而不是調整大小以適應輸入的文本。
我知道computeSize
會將其子女調整爲首選大小。我不希望這種情況發生在多行文本框中,因爲它具有滾動垂直條的功能。
我該如何防止這種情況發生?
研究了一下,我不得不說這看起來絕望。你不能重寫'Text'的'computeSize'方法,因爲子類是不允許的。 Layout的'computeSize'方法調用佈局,這是一個**巨大的**方法。我看到的唯一可能是重寫這個'layout'方法(它遍歷它的子節點)並忽略任何帶有'SWT.MULTI'風格的'Text'。 – Baz