Scalaのスイングは面白そうに見えますが、どういうわけか不完全であり、古いJavaクラスを使用する必要がある場合もありますが、それらを正しくラップする方法がわかりません。
では、javax.swing.JInternalFrameを正しくラップして、メインフレームのコンポーネントとして使用できるようにするにはどうすればよいですか?
この例をscalaとscalaswingライブラリで動作させようとすると、最終的に内部フレームを取得できましたが、メインフレームはすべての内部フレームを歪め、内部のスペースとまったく同じ幅と高さになるまで伸ばします。 MainFrame。
これは私の現在の実装です:
import swing._
import event._
object InternalFrameDemo extends SimpleSwingApplication{
val top = new MainFrame{
title = "InternalFrameDemo"
preferredSize = new Dimension(640,480)
val menuNew = new MenuItem("New"){
mnemonic = Key.N
action = new Action("new"){
def apply(){
createFrame
}
}
}
val menuQuit = new MenuItem("Quit"){
mnemonic = Key.Q
action = new Action("quit"){
def apply(){
quit()
}
}
}
menuBar = new MenuBar{
contents += new Menu("Document"){
mnemonic = Key.D
contents ++= Seq(menuNew,menuQuit)
}
}
def createFrame{
val newFrame = MyInternalFrame()
newFrame.visible = true
contents = newFrame
}
}
}
object MyInternalFrame{
var openFrameCount = 0;
val xOffset, yOffset = 30;
def apply() = {
openFrameCount += 1
val jframe = new javax.swing.JInternalFrame("Document #" + openFrameCount,true,true,true,true)
jframe.setSize(300,300)
jframe.setLocation(xOffset*openFrameCount,yOffset*openFrameCount)
Component.wrap(jframe)
}
}