2010-07-31 61 views
4

小程序類的ScalaDoc對於如何實際覆蓋UI片和添加組件的細節很細。它說:「客戶應該實現UI領域。請參閱SimpleApplet演示爲例。」Scala小程序 - SimpleApplet演示

  1. 這個SimpleApplet演示在哪裏?
  2. 除此之外,有沒有人有一些簡單的使用Scala Applet類的源代碼,而不是直接使用JApplet類?

感謝

+0

的[SimpleApplet演示是這裏](https://github.com/scala/scala/blob/master/docs/examples/swing/SimpleApplet.scala) – 2013-05-27 14:00:31

+0

作爲擺動已經移動到一個不同的GitHub LOCAT該演示現在位於https://github.com/scala/scala-swing/blob/master/docs/examples/swing/SimpleApplet.scala – Suma 2014-12-10 12:49:00

回答

4

more recent ScalaDoc可能會稍有幫助(特別是ScalaDoc的新版本允許你顯示/隱藏混凝土構件,因此您可以專注於你必須實現什麼)。

應該指出的是,你不需要必須定義了一個名爲ui的對象,它擴展了UI。 ScalaDoc所說的更精確和更靈活 - 「實施UI領域」。由於Uniform Access Principle,您可以自由將ui字段實現爲valobject(同樣,您可以使用valvar來實現def)。唯一的約束條件(如反映在ScalaDoc作爲val ui : UI)是

  1. 用戶界面必須是一個UI,和
  2. 參考到UI必須是不可變的

例如:

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 = {} 
    } 
} 
+0

優秀的信息。謝謝 – I82Much 2010-08-03 18:49:36

+2

一個小修正:'def'可以用'val'來覆蓋,但不能反過來。 – 2010-08-04 22:51:51

+0

@Daniel - 當我「證明」你可以在解釋器中用'def'覆蓋'val'時,我感到驚訝。原來我忘記擴展定義val的特徵。 :)我很高興這實際上不可能! – 2010-08-04 23:59:48

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需要一些嚴重的工作。