【发布时间】:2015-12-26 21:09:21
【问题描述】:
因为我似乎无法找到一些可以显示Dictionary 内容的预定义Morph,所以我决定最好停止寻找并想创建自己的Morph。我找到了nice description 如何从一些不错的示例代码开始让我开始,但很快我就遇到了我似乎无法在画布上绘制文本或类似内容的问题。
我创建了一个类
Morph subclass: #DictionaryView
instanceVariableNames: 'dictionary'
classVariableNames: ''
poolDictionaries: ''
category: 'StatisticsTool'
我想覆盖drawOn,如下所示:
drawOn: aCanvas
| x y |
x := 0.
y := 0.
dictionary associationsDo: [ :assoc |
aCanvas drawString: assoc key at: x@y.
aCanvas drawString: assoc value at: x+10@y.
y := y + 10. ].
我知道这并不是最好的一段代码(我还不知道我应该如何考虑最长的字符串等,但我已经到了这个地步,我什至不想再考虑这个了),但我只是想显示一些东西。不幸的是,当我尝试时这似乎不起作用
d := Dictionary new.
d at: 'test1' put: 5.
d at: 'test2' put: 23.
d at: 'test3' put: 514.
view := DictionaryView new.
view dictionary: d.
view openInWorld.
我收到一个错误:Instances of SmallInteger are not indexable
我不知道该怎么办了。我实际上没有时间写这些长长的问题,也没有时间花一整周的时间来寻找这样的东西。这一切都让我非常紧张和不耐烦,因此我想原谅自己直接问:
如何在 Smalltalk 中显示字典以便在 GUI 中使用它?
PS:也欢迎任何应对压力的技巧;)
【问题讨论】:
-
使用
d inspect或d explore怎么样,它们都在字典上打开视图(检查器)。它们甚至允许您编辑对象。 -
谢谢,但我希望能够在我的问题中提到的 GUI 中显示它...我的问题是否不清楚?
-
看看
Debugger的实现。它正是这样做的。它将上述检查器变形嵌入到自己的 UI 中。你也可以这样做。 -
我应该在哪里找到它?这可能是一个解决方案,但我希望最终产品看起来像一张简单的桌子……最终的东西应该是一张漂亮、简单的桌子,但恐怕我不得不放弃那个计划……
标签: user-interface smalltalk squeak