我試圖瞭解從回答這個線程採取以下類是如何工作的: Scala Popup Menu如何用SuperMixin創建Scala swing包裝類?
由於線程是很老,我決定剛開始一個新的問題。我是新來的Java背景的Scala,我想知道這個類是如何工作的。我讀過一個與類相同名稱的對象就像一個帶有單例對象的類?我不知道這是如何適合於實現包裝雖然..(爲什麼我們需要的對象?)
什麼是SuperMixin特質呢?這個API說:「這個特徵用來將某些調用從對等端重定向到包裝和後端,用於暴露可以通過覆蓋來定製的方法。」這對於初學者來說並沒有很好的解釋。
如果有人可以幫助向初學者解釋這個類和對象(在我看來,神奇地)爲JPopupMenu給我一個包裝類並讓我調用showmen方法讓popupMenu出現在屏幕上..它也似乎我可以設置其內容(內容+ =一些scala.swing.menuItem)沒有在下面的類中定義?
import javax.swing.JPopupMenu
import scala.swing.{ Component, MenuItem }
import scala.swing.SequentialContainer.Wrapper
object PopupMenu {
private[PopupMenu] trait JPopupMenuMixin { def popupMenuWrapper: PopupMenu }
}
class PopupMenu extends Component with Wrapper {
override lazy val peer: JPopupMenu = new JPopupMenu with PopupMenu.JPopupMenuMixin with SuperMixin {
def popupMenuWrapper = PopupMenu.this
}
def show(invoker: Component, x: Int, y: Int): Unit = peer.show(invoker.peer, x, y)
/* Create any other peer methods here */
}
謝謝,這樣做更有意義 – user3301485
注意:PopupMenu似乎是[2.11版股票scala.swing]的一部分(http://www.scala-lang.org/api/2.11.1/scala-swing/的index.html#scala.swing.PopupMenu)。 – Suma