你好,所以我有一个主应用程序,绘制一个圆形和一个矩形,但当我点击它们,他们juste消失在这里是我使用的代码
initialize
shapesView := ShapesView new.
shapesModel := ShapesModel new.
shapesView model: shapesModel.
我在
中进行了组件初始化postOpenWith: aBuilder
shapesView initializeComponents.
在ShapesView类中我有aModel访问器和这个方法,我的模型和控制器仍然是空的
initializeComponents
| shape gc|
gc := self graphicsContext.
gc paint: ColorValue red.
shape := MyRectangle origin: 2@2 extent: 50@75.
shape displayFilledOn: gc.
gc paint: ColorValue blue.
shape := MyCircle center: 100@100 radius: 50.
shape displayFilledOn: gc.
答案 0 :(得分:0)
您需要做的是找出当UI元素再次获得焦点时正在发送的方法。 如何做到这一点从Smalltalk方言到方言不等。 顺便说一句,你现在实现了这个只是意味着你只需要绘制一次。 这并不意味着它正在被重新绘制。
答案 1 :(得分:0)
正如您所发现的,对于要持久的形状,绘图应该在a ShapeView类(实例端)中的“displayOn:gc”方法(如JayK所述),它应该执行您指定的绘图: gc paint:ColorValue red。
shape:= MyRectangle原点:2 @ 2范围:50 @ 75。
shape displayFilledOn:gc。
gc paint:ColorValue blue。
shape:= MyCircle center:100 @ 100 radius:50。
shape displayFilledOn:gc。
可以在intializeComponents中创建形状,但是只要需要重新显示视图,api就会调用displayOn: 更改模型或调整窗口大小将导致失效并重新显示。 hth - Arden Thomas