当我点击 Smalltalk 时视图变白

View become white when I Click away Smalltalk

你好,我有一个绘制圆形和矩形的主应用程序,但是当我点击离开时它们就消失了,这里是我使用的代码

initialize
shapesView := ShapesView new.
shapesModel := ShapesModel new.
shapesView model: shapesModel. 

并且我在

中进行了组件初始化
postOpenWith: aBuilder
shapesView initializeComponents.

在 ShapesView 中 class 我有一个模型访问器和这个方法,我的模型和控制器仍然是空的

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.

你需要做的是找出当UI元素再次获得焦点时发送的是哪个方法。 这是如何完成的,因 Smalltalk 方言而异。 顺便说一句,你现在已经实现了这个只是意味着你只画了一次。 这并不意味着它正在重绘。

如您所见,要使形状持久,绘图应位于 "displayOn: gc" ShapeView class(实例端)中的方法(如 JayK 所述),它应该执行您指定的绘图: gc 油漆:ColorValue 红色。

shape := MyRectangle 原点:2@2 范围:50@75.

形状 displayFilledOn: gc.

gc 油漆:ColorValue 蓝色。

形状 := MyCircle 中心:100@100 半径:50.

形状 displayFilledOn: gc.

可以在 intializeComponents 中创建形状,但是 api 调用 displayOn: 每当需要重新显示视图时。
更改模型或调整 window 大小将导致失效并重新显示。 hth - 雅顿·托马斯