我想以熟悉的Swing方式开发用户界面时利用Scala的Actor Framework。
是否可以在Eclipse,NetBeans或任何其他IDE中使用混合的Java-Scala项目?
答案 0 :(得分:21)
Eclipse的“官方”Scala插件允许您将“scala性质”添加到任何项目,以及Java性质。这允许你按照自己的意愿混合搭配。
我昨晚第一次玩scala,使用Eclipse IDE,效果非常好。
另外,我刚看过这篇文章:http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources
似乎scalac已经足够了解java能够解析java源代码的依赖关系而不实际编译它们。很聪明。
答案 1 :(得分:5)
Intellij在支持混合Java / Scala项目方面做得很好。目前,Intellij中的Scala支持对我来说比Eclipse的Scala IDE更好。 (我一直是Eclipse的老用户,最近在其他一些Scala程序员的推荐下尝试了Intellij)。
答案 2 :(得分:2)
混合JAVA(Netbeans GUI-Builder)和Scala-Swing:
我刚刚创建了一个带有GUI-Builder和一些控件和简单逻辑的新JPanel。
然后创建一个Scala对象,如Scala-Swing教程中所示:
object MySampleView extends Frame { title = "SomeTitle" ...
然后我将新的JPanel添加到内容中:
contents = new Component { override lazy val peer = new MySampleJPanel() }
编译项目时,我会在GUI-Builder Cool中看到JPanel的每次更改。
答案 3 :(得分:1)
您是否尝试过Scala的Swing包装器?它是非常轻量级的,因为你总是可以访问底层的Swing类,但是经过深思熟虑。我发现它很愉快 - react 模式使事件处理变得更加容易,并且actor框架使事件传播比使用PropertyChangeSupport
更加清晰完全可以将它与您自己的自定义Swing小部件一起使用。
答案 4 :(得分:1)
我已经在我的应用程序中成功混合了Java和Scala。它在Goggle App Engine中运行,我使用Spring MVC作为UI。 (稍后将移至Lift)
Intellij的插件是一个很好的帮助。虽然现在还处于早期阶段,但偶尔会出现问题。 (例如,Scala插件编译器似乎不太喜欢JDO增强的Java类...有一个解决方法,我相信这个bug很快就会修复)。
我发现混合的唯一一件事就是处理在Scala中返回Java集合类的Java API。它非常笨重,你必须跳过一些箍。
答案 5 :(得分:0)
Scala plugins for NetBeans也表现不错。使用NetBeans使Swing开发变得如此简单,它可能正是您所寻找的:)
答案 6 :(得分:0)
大!!!感谢您分享这个想法。
为了补充,下面的代码使用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