我有一个 ScrolledComposite,其内容被截断。我已经用 Google 搜索过,并且知道这是 Windows 上的一个已知问题。
我能找到的唯一建议解决方法是使用canvas.scroll 功能。
考虑到问题的年龄,我想知道是否有更好的解决方法?
谢谢!
我有一个 ScrolledComposite,其内容被截断。我已经用 Google 搜索过,并且知道这是 Windows 上的一个已知问题。
我能找到的唯一建议解决方法是使用canvas.scroll 功能。
考虑到问题的年龄,我想知道是否有更好的解决方法?
谢谢!
(您发布的链接给出了 400 错误)
不确定我的问题是否相同,但我也遇到了 ScrolledComposite 的截断问题。问题是,当我调整要滚动的 Composite 的大小并且滚动条变得可见时,控件没有考虑滚动条占用的空间。为了解决这个问题,我在滚动组合上的 Resize 侦听器中添加了一种递归代码:
设置内容组合的大小后,检查 scrolledComposite 的滚动条(例如 getVerticalBar())是否刚刚变得可见。如果是这样,请向您的侦听器发送一个新的 Resize 事件。这是我的代码片段...
public void handleEvent(Event event)
{
int newWidth = scrolledComposite.getSize().x;
boolean hasScroll = false;
ScrollBar scrollBar = scrolledComposite.getVerticalBar();
if (scrollBar.isVisible())
{
hasScroll = true;
newWidth -= scrolledComposite.getVerticalBar().getSize().x;
}
newWidth -= 8;
Point size = contentComposite.computeSize(newWidth, SWT.DEFAULT);
contentComposite.setSize(size);
int scroll_multiplier = size.y / 50;
scrollBar.setIncrement(scroll_multiplier);
/**
* If the scroll bar became visible because of the resize, then
* we actually need to resize it again, because of the scroll
* bar taking up some extra space.
*/
if (scrollBar.isVisible() && !hasScroll)
{
scrolledComposite.notifyListeners(SWT.Resize, null);
}
}
希望这可以帮助!
编辑:哇,我没有注意到 OP 的日期。希望这最终对某人有所帮助...