- 我有一个包含一个字符串变量的对象。
- 我有一个窗口包含一个LabelMorph/TextMorph(或其他一些显示文字的Morph?)。
如何将LabelMorph/TextMorph绑定到变量,以便标签在变量中的字符串更新时进行更新?如何将LabelMorph/TextMorph绑定到变量,以便Morph反映变量的变化?
- 经典的Smalltalk-80依赖/更改/更新机制?
- Pharo公告框架?
- 有什么不同?
我该怎么做?我应该使用哪种Morph?
如何将LabelMorph/TextMorph绑定到变量,以便标签在变量中的字符串更新时进行更新?如何将LabelMorph/TextMorph绑定到变量,以便Morph反映变量的变化?
我该怎么做?我应该使用哪种Morph?
取决于你想达到的目标。 你可能想看一下在目前的驼鹿形象中用Glamour做到这一点的方法。 在工作区,做它:
GLMBasicExamples new magritte openOn: GLMMagrittePersonExample sampleData
这显示了如何在节省公告工作。前面的例子是一个更好的方式开始了解如何与魅力的工作(而且由于examplebrowser是建立,当它是嵌套马格利特例子不更新列表的方式):
GLMBasicExamples open
这已其他几个更新变化的例子。
最简单的方法是使用一个更新字符串变形:
UpdatingStringMorph on: self selector: #myLabel
这将发送#myLabel(或任何其他消息),自(或任何其它对象),并显示它。
这是本杰明·范·Ryseghem上的Pharo邮件列表提供了一个解决方案:
对于这种情况,我的解决办法是使用而ValueHolder。 不是直接将字符串存储在实例变量中,而是将其 存储到ValueHolder中。
我在工作区尝试这样做:
|string label|
string := 'Wait till i change..' asValueHolder.
label := LabelMorph contents: string contents.
string whenChangedDo: [:newValue | label contents: newValue ].
label openInWindow.
[ 5 seconds asDelay wait. string value: 'I changed :)' ] fork.
谢谢你,我开始学习文档和例子。这很有趣。 – MartinW 2013-03-21 19:45:12