Scalaのスイングコンポーネントが完全にラップされていないように見える理由はありますか?たとえば、「paintImmediately」関数。または「更新」(これが原因でオーバーライドできないようです)。
ScalaAPIと比較したScalaソースコードの調査は少し混乱しているようです..(以下のscala 2.9ソースが発揮します)。APIは、これらの他の関数が存在することを示唆しているようです。
http://www.scala-lang.org/api/current/scala/swing/Component $ SuperMixin.html
SuperMixinの特性からわかることは、ピアコンポーネントへのオーバーライド呼び出しを開くものです。ほんの少しが定義されているようです。Update(Graphics g)をオーバーライドするにはどうすればよいですか?Panel.peer.paintImmediately(rect)を呼び出すより流暢な方法はありますか?
描画のためにこれらの問題を修正するために、新しいPanelクラスを構築するためにScalaソースを改造することを検討しています。
抽象クラスComponentextendsUIElement {override lazy val peer:javax.swing.JComponent = new javax.swing.JComponent with SuperMixin {} var initP:JComponent = null
/**
* This trait is used to redirect certain calls from the peer to the wrapper
* and back. Useful to expose methods that can be customized by overriding.
*/
protected trait SuperMixin extends JComponent {
override def paintComponent(g: Graphics) {
Component.this.paintComponent(g.asInstanceOf[Graphics2D])
}
def __super__paintComponent(g: Graphics) {
super.paintComponent(g)
}
override def paintBorder(g: Graphics) {
Component.this.paintBorder(g.asInstanceOf[Graphics2D])
}
def __super__paintBorder(g: Graphics) {
super.paintBorder(g)
}
override def paintChildren(g: Graphics) {
Component.this.paintChildren(g.asInstanceOf[Graphics2D])
}
def __super__paintChildren(g: Graphics) {
super.paintChildren(g)
}
override def paint(g: Graphics) {
Component.this.paint(g.asInstanceOf[Graphics2D])
}
def __super__paint(g: Graphics) {
super.paint(g)
}
}