Scala小程序 - SimpleApplet演示

时间:2010-07-31 21:49:08

标签: swing scala applet

applet类的ScalaDoc在关于如何实际覆盖ui片段和添加组件的细节上非常细致。它说“客户端应该实现ui字段。请参阅SimpleApplet演示以获取示例。”

  1. 这个SimpleApplet演示在哪里?
  2. 除此之外,有没有人有一些使用Scala Applet类的简单源代码,而不是直接使用JApplet类?
  3. 由于

2 个答案:

答案 0 :(得分:4)

最后找到了一些显示您需要做的事情的来源:

http://scala-forum.org/read.php?4,701,701

import swing._
import java.awt.Color

class MainApplet extends Applet {

  object ui extends UI {
     val mainPanel = new BoxPanel(Orientation.Vertical) {
     // different sort of swing components
     contents.append(new Button("HI"))
     }
     mainPanel.background = Color.WHITE
     contents = mainPanel

     def init():Unit = {}
  }
}

换句话说,您定义了一个名为ui的对象,它扩展了UI。我从来没有想过这一点。 ScalaDoc需要一些认真的工作。

答案 1 :(得分:4)

more recent ScalaDoc可能稍微有点帮助(特别是,新版本的ScalaDoc允许您显示/隐藏具体成员,以便您可以专注于必须实施的内容)。< / p>

应该注意的是,不必定义一个扩展UI的名为ui的对象。 ScalaDoc所说的更准确,更灵活 - “实现ui领域”。由于Uniform Access Principle,您可以自由地将ui字段实现为valobject(类似地,您可以使用valvar实现def)。唯一的约束(在ScalaDoc中反映为val ui : UI)是

  1. ui必须是UI,
  2. 对ui的引用必须是不可变的
  3. 例如:

    class MainApplet extends Applet {
      val ui = new MainUI(Color.WHITE)
    
      class MainUI(backgroundColor: Color) extends UI {
         val mainPanel = new BoxPanel(Orientation.Vertical) {
            // different sort of swing components
            contents.append(new Button("HI"))
         }
         mainPanel.background = backgroundColor // no need for ugly _=
         contents = mainPanel
    
         def init(): Unit = {}
       }
    }