2

私は現在、最初のより大きな Scala Swingプロジェクトを開発しており、ユーザーがタイルを選択するタイル マップ エディターの一部として独自のコンポーネントを作成しました。

別の要素が選択されたときにコンボ ボックスが何らかのイベントを発行するように、このコンポーネントにも独自のケース クラスを使用して同じことをさせたいと考えています。このトピックに関する記事やチュートリアルは見つかりませんでした。

また、サブコンポーネントのイベントを発行するコンポーネントを作成するにはどうすればよいでしょうか。それが彼らに届くように。

4

1 に答える 1

3

おそらく、scala-swing を拡張する他のプロジェクトを見てください。たとえば、ScalaSwingContribがあります。これは非常に単純なコンポーネントであるため、ColorChooserコンポーネントと関連するものを見ることは良い出発点だと思います。ColorChooserEvent

import javax.{swing => js}
import js.{event => jse}
import java.awt.Color
import scala.swing._
import event.Event

class ColorChooser(initialColor: Color) extends Component {
  ...
  override lazy val peer: js.JColorChooser = 
    new js.JColorChooser(initialColor) with SuperMixin

  peer.getSelectionModel().addChangeListener(new jse.ChangeListener {
    def stateChanged(e: jse.ChangeEvent) {
      publish( new ColorChangeEvent(peer.getColor))
    }
  })
}

case class ColorChangeEvent(c: Color) extends Event
于 2012-09-23T10:11:06.633 に答える