2010年8月22日日曜日

ScalaとSwing

Scalaでうまい書き方を探すはやめたほうがいいかもしれない。
-> 訂正。自分がヘボイだけだった。
scala swing designを読み直し中。勉強しなおします。

・この記事を書いたときに思ったことはそのままに。
結局、scala-swingはラッパーだし、ベタに書いた場合、ほぼそのままでも動くでやんの。:<

元のコードは、ここのを参照しました。
http://terai.xrea.jp/Swing/AlwaysOnTop.html

scalaもどきにしたコードが以下のとおり。

import java.awt._
import java.awt.event._
import javax.swing._

object MainPanel {
class MainPanel(frame: JFrame) extends JPanel {
this.setLayout(new BorderLayout())
var checkbox :JCheckBox = new JCheckBox(new AbstractAction("Always On Top") {
def actionPerformed(e : ActionEvent) :Unit = {
// var c = e.getSource
// frame.setAlwaysOnTop(c.isSelected())
frame.setAlwaysOnTop(checkbox.isSelected())
}
})
frame.setAlwaysOnTop(true)
checkbox.setSelected(true)

var p = new JPanel
p.add(checkbox)
p.setBorder(BorderFactory.createTitledBorder("JFrame#setAlwaysOnTop(boolean)"))
add(p, BorderLayout.NORTH)
setBorder(BorderFactory.createEmptyBorder(5,5,5,5))
setPreferredSize(new Dimension(320, 180))
}
def main(args: Array[String]) {
EventQueue.invokeLater(new Runnable() {
def run () {
createAndShowGUI()
}
})
}
private def createAndShowGUI() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())
} catch {
case e => e.printStackTrace
}
val frame = new JFrame("AlwaysOnTop")
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
frame.getContentPane().add(new MainPanel(frame))
frame.pack
frame.setLocationRelativeTo(null)
frame.setVisible(true)
}
}

0 件のコメント:

コメントを投稿