2011-10-11 36 views
4

我嘗試將一些Java代碼移植到Scala。如何在Scala Swing應用程序中使用scala.swing.Applet?

我想在GUI應用程序中顯示scala.swing.Applet

用的Java Swing我將使用Scala的搖擺做

val jframe = new JFrame() 
jframe.add(APPLET) 

jframe.setVisible(true) 
APPLET.setFocusCycleRoot(true) 

APPLET.init() 
APPLET.start() 

但代碼

def top = new MainFrame { 
    contents = APPLET 
} 

不喜歡的類型:

error: type mismatch; 
found : scala.swing.Applet 
required: scala.swing.Component 
contents = APPLET 

當我嘗試添加小程序通過Java對等體,它會失敗,如下所示:

def top = new MainFrame { 
    contents = new Panel() { 
    peer.add(new SinglePlayerGame) 
    } 
} 

我收到此錯誤信息:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: scala.swing.Applet cannot be cast to javax.swing.JComponent 
    at scala.swing.Container$Wrapper$$anon$1.componentAdded(Container.scala:43) 
    at java.awt.Container.processContainerEvent(Container.java:2071) 
    at java.awt.Container.processEvent(Container.java:2042) 
    at java.awt.Component.dispatchEventImpl(Component.java:4629) 
    at java.awt.Container.dispatchEventImpl(Container.java:2103) 
    at java.awt.Component.dispatchEvent(Component.java:4455) 
    at java.awt.Container.addImpl(Container.java:1081) 
    at java.awt.Container.add(Container.java:373) 

我應該怎樣解決這個問題?

+1

'found:scala.swihg.Applet'什麼是'swihg'?它與中間打嗝的大腿相似嗎?如果這是一個錯字,我建議複製/粘貼I/O。 –

+0

相關:http://stackoverflow.com/questions/3379901/scala-applets-simpleapplet-demo –

回答

3

它不是用Scala編寫的,但Subway是一個混合applet和應用程序的簡單例子。 JAppletJFrame都是top-level containers,並且initContainer()執行公共初始化。

請注意,這兩個組件都需要注意Initial Threads