2015-11-18 4 views
0

Я хочу изменить местоположение окна 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 
    } 
} 

Как я могу это сделать?

ответ

0

Это может быть достигнуто с помощью следующего заявления:

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

здесь this.peer является ссылкой на Java JButton, getRootPane дает вам заполнитель кнопки, то в данном конкретном случае getParent получает ваш MainFrame объекту (возможно, придется использовать более одного getParent, если иерачы больше). Я думаю, используя top.location, вы пытаетесь создать новый MainFrame, который, вероятно, будет запрещен API.