当我点击Smalltalk时,视图变为白色

时间:2017-09-02 19:13:37

标签: smalltalk visualworks

你好,所以我有一个主应用程序,绘制一个圆形和一个矩形,但当我点击它们,他们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.

2 个答案:

答案 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