Если вы просто хотите перевести координаты, чтобы нижний левый угол был источником, а не верхним правым, сделайте следующее:
case e: MouseClicked => {
val newPoint = new Point(e.point.x, size.height - e.point.y)
// do stuff using newPoint instead of e.point
}
Не думаю, что вы действительно хотитепереопределить всю систему координат, так как это, скорее всего, приведет к хаосу при рисовании и выравнивании компонента.
Еще одна вещь, которую вы можете сделать, это переопределить метод getMousePosition
базового JPanel:
val p = new Panel {
override lazy val peer = new javax.swing.JPanel with SuperMixin {
override def getMousePosition = {
val p: Point = super.getMousePosition
new Point(p.x, getHeight - p.y)
}
}
...
Тогда
case e: MouseClicked => {
val newPoint: Point = peer.getMousePosition
// do stuff
}
Однако переопределение getMousePosition
не влияет на сообщаемую позицию по событию MouseClicked
, поэтому не сильно выигрывает по первому пути.