我希望利用Scala的Actor Framework,同時以熟悉的Swing方式開發用戶界面。在同一個項目中同時進行Java和Scala開發
是否有可能在Eclipse,NetBeans或任何其他IDE中有混合的Java-Scala項目?
我希望利用Scala的Actor Framework,同時以熟悉的Swing方式開發用戶界面。在同一個項目中同時進行Java和Scala開發
是否有可能在Eclipse,NetBeans或任何其他IDE中有混合的Java-Scala項目?
Intellij在支持混合Java/Scala項目方面做得很好。目前Intellij中的Scala支持對於我來說比對Eclipse更好的Scala IDE。 (我曾經是一個很久以前的Eclipse用戶,最近在其他一些Scala編碼人員的推薦下嘗試了Intellij)。
您是否試過Scala的Swing包裝?這是非常輕量級的,因爲你總是可以訪問底層的Swing類,但它非常深思熟慮。我發現它令人愉快地工作着 - 在反應模式使得事件處理變得更輕鬆和演員的框架,使事件的傳播比使用的PropertyChangeSupport所以更清晰
這是完全有可能與自己的自定義使用它擺動小部件。
Eclipse的「官方」Scala插件允許您將「scala自然」添加到任何項目中,以及java本質。這可以讓你根據自己的意願進行混搭。
昨天晚上我第一次玩scala,使用Eclipse IDE,效果很好。
而且,我只是碰到這種文章跑:http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources
似乎scalac知道有足夠的瞭解Java成爲能夠解決的Java源代碼的依賴關係,而不實際編譯它們。很聰明。
不錯。這項合作是否適用於雙方的javadoc/scaladoc? – akarnokd 2009-06-23 09:10:06
Scala plugins for NetBeans也做得很好。隨着NetBeans的Swing開發變得如此簡單,它可能就是你正在尋找的東西:)
我已經在我的應用程序中成功地混合了Java和Scala。它在Goggle App Engine中運行,並使用Spring MVC作爲UI。 (稍後將端口提升)
Intellij的插件是一個很好的幫助。雖然現在還很早,偶爾也會出現問題。 (例如,Scala插件編譯器似乎不太喜歡JDO增強的Java類......有一個解決方法,我相信這個錯誤很快就會被修復)。
我發現有關混合的唯一乏味的事情就是處理在Java中返回Java集合類的Java API。它非常笨重,你必須稍稍跳過籃球。
混合JAVA(Netbeans的圖形用戶界面的生成器)和Scala擺幅:
我剛剛創建與GUI-Builder和一些控制和簡單的邏輯的新JPanel。
然後創建一個階對象一樣出現在斯卡拉擺幅教程:
object MySampleView extends Frame { title = "SomeTitle" ...
然後我添加了新JPanel的內容:
contents = new Component { override lazy val peer = new MySampleJPanel() }
當編譯項目中,我看到的每一個變化GUI-Builder Cool中的JPanel。
太棒了!感謝您分享這個想法。
爲了補充,下面的代碼使用了GUI編輯器(我使用WindowBuilder + Eclipse + Scala插件)來設計GUI,然後使用Scala完成其他一切。現在可以使用Java Swing GUI編輯器並在Scala中進行所有編程。
import swing._
import event._
object TestApp extends Frame {
def main(args: Array[String]): Unit = {
title = "Scala Swing Test App"
val gui = new MyTestPanel() // a JPanel class from the GUI Editor
val button = new Button {override lazy val peer = gui.getBtnMyButton()}
// getBtnMyButton() is generated in the Gui Editor (Expose Component)
contents = new Component{ override lazy val peer = gui }
this.listenTo(button)
reactions += {
case ButtonClicked(b) => println("BUTTON CLICK.")
}
this.visible = true
} }
Mvackel
我試圖從斯卡拉本書的示例程序,但我發現它從我多年的悠久Swing GUI的開發經驗也不同。 – akarnokd 2009-06-23 08:12:32
我一直在編寫Swing 10年 - 給Scala一個機會! – 2009-06-23 13:21:14
我認爲學習scala編程和actor框架的方法已經足夠了,並且避免了Scala GUI開發實踐差異導致的混淆,因爲我正在同時處理其他幾個Swing GUI編輯項目。 – akarnokd 2009-06-26 09:04:06