我正在尝试在 Pharo 3.0 中制作一个简单的用户界面。在某个地方我需要一个颜色选择器,所以我考虑使用 ColorSelectorDialogWindow
。
我的问题是我不确定如何真正从中获取颜色。我已经看到它有一个 selectedColor
消息,但我错过了一种在用户单击“确定”按钮时实际捕获该事件的方法。
我已经尝试过 on: send: to:
但它似乎没有帮助,而且无论如何我不知道事件名称。我还看到,在确认时,消息 applyChanges
被发送给自己,所以我尝试子类化 ColorSelectorDialogWindow
只是为了添加
applyChanges
super applyChanges.
self triggerEvent: 'selectedColor' with: self selectedColor.
但我似乎无法使用 on: send: to:
捕获自己的 selectedColor
事件。
Hook 对话框的正确方法是什么,更一般地说,在组件之间发送事件的正确方法是什么?
最佳答案
有公告,这是 Pharo 目前没有很好记录的部分。 在工作区中尝试此操作:
| colorPicker |
colorPicker := ColorSelectorDialogWindow new.
colorPicker announcer when: ColorChanged do: [ :announcement | UIManager inform: 'Selected color: ' , announcement newColor asString ].
colorPicker open.
这是可以在 ColorChanged
公告类注释中找到的示例。
您可以通过将 newColor
发送到 ColorChanged
公告来获取所选颜色。
关于events - pharo 中的事件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25650731/