我所说的适当,是指:
文档(如果是包装器,它不应该让我用其他语言引用父项目)
没有特定的顺序。
哪些GUI工具包满足哪些条件?
发布于 2012-05-08 21:13:40
Scala有自己的Swing库。这将在幕后使用标准的Swing库,但它有一些很好的补充,最值得注意的是,因为它是为Scala而设计的,所以它可以以比标准Swing库更简洁的方式使用:
import swing._
object HelloWorld extends SimpleSwingApplication {
def top = new MainFrame {
title = "Hello, World!"
contents = new Button {
text = "Click Me!"
}
}
}
看到设置小部件属性有多简单了吗?
除了更好的语法和一些小的附加(比如SimpleSwingApplication
类),我认为它的优点和缺点和普通的Swing差不多。
发布于 2014-06-14 06:02:38
ScalaFX是Scala2的一个成熟的包装器,它在某些方面表面上类似于JavaFX Swing,但有一些特性让它脱颖而出:
A
、B
和C
。A
和B
是可调整大小的,C
的高度应该是所有时间A
和B
的高度之和。在Swing中,这需要编写一组自定义事件侦听器来执行此工作。ScalaFX绑定让您可以通过使用属性绑定操作符C.height <== A.height + B.height
来简单地表达这一点。发布于 2013-10-23 07:38:29
我使用Java Swing。下面是它如何与您的需求相匹配:
隐式类和A{定义和(f:a =>单位):a={ f(a);a}}
这样你就可以做到
val JButton=(新按钮(“按下我!”)and (_ setForeground Color.red)和(_ setFont new Font(null,Font.PLAIN,12) val win = (new JFrame("Hello!") )和(_ add按钮)和(_ pack())和(_ setDefaultCloseOperation JFrame.EXIT_ON_CLOSE)和(_ setVisible(True)
现在对于事件和状态,在我看来,这仍然是所有gui框架中的一个粗略的优势-侦听器有他们的问题,事件流有他们的问题。我已经成功地用reactive-core和redo-signals (我自己的,未记录的)增强了Swing的事件,以便更容易地组织状态。
您可以使用一些更多的帮助函数来改进定义侦听器的繁琐程度,比如
def actionListener(f:=>单位)=新ActionListener { def actionPerformed(e: ActionEvent) {f}}
和
定义以后(事物:=>单位){SwingUtilities.invokeLater(新运行的{ def run() { thing } }) }
就我个人而言,我希望Scala Swing也走了这条路。为现有Java类编写包装器的时间为O(n),对于作者没有选择为其编写包装器的类,它不会给您带来任何好处。
https://stackoverflow.com/questions/10497118
复制相似问题