无法动态更改摇摆窗口位置

时间:2015-11-18 23:01:17

标签: scala-swing

我想更改scala-swing窗口位置。 我发现设置位置在初始化时正常工作,但无法动态更改位置

import java.awt.Point

import scala.swing._
import scala.swing.event.ButtonClicked

object TestWindow extends SimpleSwingApplication {
  def top = new MainFrame {
    contents = new BoxPanel(Orientation.Vertical) {
      contents += new Button("Change location") {
        reactions += {
          case e: ButtonClicked => {
            println("change location")
            top.location = new Point(200, 100)//doesn't work
            println("change location end")
          }
        }
      }
    }
    location = new Point(100, 50) //works correctly
  }
}

我该怎么做?

1 个答案:

答案 0 :(得分:0)

可以使用以下声明来实现:

this.peer.getRootPane.getParent.setLocation(new Point(200, 100))

此处this.peer是对java JButton的引用,getRootPane为您提供按钮的占位符,然后在此特定情况下getParent获取您的MainFrame对象(可能需要使用)如果层次更大,则不止一个getParent。我认为使用top.location您尝试创建一个可能被API禁止的新MainFrame