如何使滚动窗格适应其内容?
How to make a scrollpane adjust to its content?
我正在尝试显示一个 Morph
,它可以在显示时扩大和缩小。为了不冒 Morph
超出 window 的风险,我想将它放在 ScrollPane
中,这样如果它对于 window。例如:
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).
我的问题是,在此示例中,绿色矩形不再适合 window,但没有显示滚动条。如果切换最后两行代码,我会得到一个滚动条。
因此我的问题是:有没有办法让 ScrollPane
知道它的滚动条中的 Morph
增加了?
似乎只要向 ScrollPane 发送一条消息就可以解决问题:
sp hideOrShowScrollBars.
我第一次尝试通知 morph 有关布局更改的信息 rows layoutChanged.
但没有成功。
然后,为了发现这个技巧,我浏览了 scroller
消息的所有发件人(select 文本窗格中的滚动条,然后按 alt+n ctrl+n 或 cmd+n,具体取决于平台),以及对 ScrollPane
中 scroller
实例变量的所有访问(使用 alt+m 浏览滚动条的实现,然后 select ScrollPane>>scroller 方法中的 inst var 并按 alt/ctrl/cmd+shift+n,或从浏览器中执行相同的操作 ScrollPane browse
),直到我找到合理的消息发送。
我正要回答和aka.nice一样的问题
但它并不总是显示正确的滚动条。
好像
sp setScrollDeltas.
与 hideOrShowScrollBars
相同,并且多一点。
我正在尝试显示一个 Morph
,它可以在显示时扩大和缩小。为了不冒 Morph
超出 window 的风险,我想将它放在 ScrollPane
中,这样如果它对于 window。例如:
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).
我的问题是,在此示例中,绿色矩形不再适合 window,但没有显示滚动条。如果切换最后两行代码,我会得到一个滚动条。
因此我的问题是:有没有办法让 ScrollPane
知道它的滚动条中的 Morph
增加了?
似乎只要向 ScrollPane 发送一条消息就可以解决问题:
sp hideOrShowScrollBars.
我第一次尝试通知 morph 有关布局更改的信息 rows layoutChanged.
但没有成功。
然后,为了发现这个技巧,我浏览了 scroller
消息的所有发件人(select 文本窗格中的滚动条,然后按 alt+n ctrl+n 或 cmd+n,具体取决于平台),以及对 ScrollPane
中 scroller
实例变量的所有访问(使用 alt+m 浏览滚动条的实现,然后 select ScrollPane>>scroller 方法中的 inst var 并按 alt/ctrl/cmd+shift+n,或从浏览器中执行相同的操作 ScrollPane browse
),直到我找到合理的消息发送。
我正要回答和aka.nice一样的问题 但它并不总是显示正确的滚动条。 好像
sp setScrollDeltas.
与 hideOrShowScrollBars
相同,并且多一点。