java fx的鼠标事件大类_tornadofx监听鼠标事件,用鼠标画点

be2db2722afa855bcb72ad13bfa4c272.png

import javafx.collections.FXCollections

import javafx.scene.input.*

import javafx.scene.paint.Color

import javafx.scene.shape.Circle

import tornadofx.*

class LearnApp : App(LearnV::class)

class LearnV : View("learn") {

val dots = mutableListOf()

val count = stringProperty()

override val root = borderpane {

top = toolbar {

Buttons.values().forEach { ss ->

button(ss.toString().replace("_", " ")) {

action {

ss.run()

}

useMaxWidth = true

}

}

}

center = pane {

Dot.all.onChange {

children.removeAll(dots)

dots.clear()

it.list.forEach {

Circle(it.x, it.y, 5.0).apply {

fill = Color.RED

children += this

dots += this

}

}

count.value = dots.size.toString()

}

addEventHandler(MouseEvent.MOUSE_CLICKED) {

Dot.create(it.x, it.y)

count.value = dots.size.toString()

}

}

bottom {

form {

fieldset {

field("Dots created:") {

label(count)

}

}

}

}

prefWidth = 200.0

prefHeight = 200.0

}

}

enum class Buttons {

Clear {

override fun run() {

Dot.all.clear()

}

},

Add {

override fun run() {

val dot = Dot.create((1..200).random().toDouble(), (1..200).random().toDouble())

}

};

abstract fun run()

}

class Dot(val id: Int, val x: Double, val y: Double) {

companion object {

val all = FXCollections.observableArrayList()

fun create(x: Double, y: Double): Dot {

val nextId = (all.asSequence().map { it.id }.max() ?: -1) + 1

return Dot(nextId, x, y).also { all += it }

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值