我正在尝试显示Morph
,可以在显示时增长和缩小。为了不冒Morph
从窗口中生长出来的风险,我想把它放在ScrollPane
中,这样如果它对于窗口来说太大就可以滚动它。举个例子:
rows := Morph new
layoutPolicy: TableLayout new;
listDirection: #topToBottom;
color: Color white.
sp := ScrollPane new
extent: 100@100.
sp scroller addMorph: rows.
rows addMorphBack: (RectangleMorph new color: Color red).
rows addMorphBack: (RectangleMorph new color: Color blue).
sp openInWindow.
rows addMorphBack: (RectangleMorph new color: Color green).
我的问题是,在此示例中,绿色矩形不再适合窗口,但不显示滚动条。如果切换了最后两行代码,我会得到一个滚动条。
因此我的问题是:有没有办法让ScrollPane
知道其卷轴中的Morph
已经增加?
答案 0 :(得分:4)
答案 1 :(得分:1)
似乎只需向ScrollPane发送一条消息即可:
sp hideOrShowScrollBars.
我首先尝试通过变形来告知布局更改rows layoutChanged.
但没有成功。
然后,为了发现这个技巧,我浏览了scroller
消息的所有发件人(在文本窗格中选择滚动条并根据平台点击alt + n ctrl + n或cmd + n),以及所有访问权限scroller
中的ScrollPane
实例变量(使用alt + m浏览滚动条的实现者,然后选择ScrollPane中的inst var>>滚动方法并按alt / ctrl / cmd + shift + n,或者执行来自浏览器ScrollPane browse
的相同内容,直到我发现可以发送合理的消息。