Scala2.8のSwingで、java.awt.Dimensionがどこでimportされてるか調べてみた
2.8のソースコード落っことしてきて、たんにgrepかけただけだけど。
調べた理由はimport文なしでnew Dimensionって書いても問題なかったから。
結果、scala/swing/package.scalaにありました。
短いのでコード全部引用。
package scala /** * Useful imports that don't have wrappers. */ package object swing { type Point = java.awt.Point type Dimension = java.awt.Dimension type Rectangle = java.awt.Rectangle type Insets = java.awt.Insets type Graphics2D = java.awt.Graphics2D type Color = java.awt.Color type Image = java.awt.Image type Font = java.awt.Font protected[swing] def ifNull[A](o: Object, a: A): A = if(o eq null) a else o.asInstanceOf[A] protected[swing] def toOption[A](o: Object): Option[A] = if(o eq null) None else Some(o.asInstanceOf[A]) protected[swing] def toAnyRef(x: Any): AnyRef = x.asInstanceOf[AnyRef] }
importしてなかった。type Dimensionがセットされてました。なるほど。
む?
じゃあ、クラスメソッドを呼んだりするときはやっぱりimportが欲しい感じかな?
//-----省略--------- def top = new MainFrame { title = "sample Test" val textLabel = new Label("Input Text"){ import java.awt.Font peer.setHorizontalAlignment(SwingConstants.CENTER) peer.setFont(new Font("monospaced",Font.PLAIN,80)) } //-----以下省略---------
ふむ。