当我单击Smalltalk时,查看变白



你好,所以我有一个绘制一个圆圈和矩形的主要应用程序

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

我的组件初始化

postOpenWith: aBuilder
shapesView initializeComponents.

在Shapesview类中,我有Amodel访问者,而该Methode,我的模型和控制器仍然为空

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.

正如您发现的,要持久形状,图纸应在一个ShapeView类(实例侧)中的" Displayon:GC"方法(如Jayk所述),该方法应执行您指定的图形:GC油漆:ColorValue红色。

shape:= myretectangle起源:2@2范围:50@75。

形状显示填充:gc。

GC油漆:ColorValue Blue。

形状:= mycircle中心:100@100 radius:50。

形状显示填充:gc。

可以在IntializeComponents中创建形状,但是API调用Displayon:每当需要重新显示视图时。
更改模型或调整窗口大小将导致无效并重新显示。HTH- Arden Thomas

您需要做的是找出在UI元素再次获得焦点时发送的方法。如何完成此操作从Smalltalk方言到方言各不相同。顺便说一句,您现在已经实现了这一点,只是意味着您只绘制一次。这并不意味着它根本被重新绘制。

最新更新