因爲我似乎無法找到某個預定義的Morph
,它可以顯示Dictionary
的內容,所以我決定最好不要再找,並且想創建我自己的Morph
。我發現一個nice description如何從一些很好的示例代碼開始讓我開始,但很快我遇到了問題,我似乎無法在畫布上繪製文本或類似的東西。如何在smalltalk中以變形形式顯示字典的內容?
我創建了一個類
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: [email protected]
aCanvas drawString: assoc value at: [email protected]
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探索「,他們都在字典上打開視圖(視察員)。他們甚至允許你編輯對象。 –
謝謝,但我希望能夠在我的問題中提到的GUI中顯示它...我把我的問題不清楚嗎? –
查看'Debugger'的執行情況。正是這樣做。它將上面的檢查器變體嵌入到它自己的用戶界面中。你也可以做到的。 –