gpt4 book ai didi

oop - smalltalk 按钮事件处理

转载 作者:行者123 更新时间:2023-12-01 03:36:33 26 4
gpt4 key购买 nike

我是 Squeak Smalltalk 的新手。如何在单击按钮时捕获按钮单击事件并执行一些代码。

我试过这段代码,但它不起作用!

我创建了一个新的按钮类:

SimpleButtonMorph subclass: #ButtonTest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'test'

在这个类里面我写了这个方法:
handleMouseDown: event
^ true.

我想在另一个 Morph 中使用按钮,所以我创建了新的 Morph 类:
RectangleMorph subclass: #RectangleMorphTest
instanceVariableNames: 'textField button stringLabel mouseAction'
classVariableNames: ''
poolDictionaries: ''
category: 'test'

在 Initialize 方法中,我在 RectangleMorph 中编写 buttonMorph,rectangleMorph 的初始化方法:
initialize  
super initialize.
self bounds: ((0@0) extent: (400@400)).
self color: Color gray.

textField := TextFieldMorph new.
textField color: Color lightYellow.
textField contents: 'text'.
textField bounds: ((25@25) extent: (300@75)).

button := ButtonTest new.
button borderWidth: 2.
button bounds: ((150@150) extent: (200@200)).
button label: 'print text'.
button target: button.
button mouseDownOn: #yellowButtonPressed event: [Transcript show: 'hello'].

stringLabel := StringMorph new contents: 'This is a string'.
stringLabel bounds: ((150@180) extent: (200@200)).

self addMorph: textField.
self addMorph: button.
self addMorph: stringLabel.

问题

我试图在 RectangleMorph 中处理一个 Button 事件,但它不起作用。那么如何处理 RectangleMorph 中的按钮单击事件呢?

最佳答案

搜索 SimpleButtonMorphhttp://wiki.squeak.org/squeak给你一些命中。

一些如何使用按钮类的示例here

您基本上必须为按钮和 定义一个目标。 Action 选择器 .目标可能是一个代码块, Action 选择器是你发送给代码块的方法#value。

所以你有了

  button target: [Transcript show: 'hello'].

进而
  button actionSelector: #value.

也可以看看
  • http://wiki.squeak.org/squeak/2284变形鼠标向上 Action
  • http://wiki.squeak.org/squeak/57
  • 关于oop - smalltalk 按钮事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244186/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com