本文介绍了从斯卡拉2.9.2使用ListView控件与Java 7给出编译错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Scala的2.9.2和Java 7的一个项目。
I'm working on a project that use scala 2.9.2 and java 7.
我想要做的是使用Scala的ListView控件创建GUI。
What I'm trying to do is create a GUI using the scala ListView.
下面是一个小code片断:
Here's a small code snippet:
private val listView = new ListView[Document](someList)
.
.
.
for (selectedDocument <- listView.peer.getSelectedValuesList) {
doSomething(selectedDocument)
}
这给了我下面的编译错误:
This gives me the following compile error:
error: something is wrong (wrong class file?): class JList with type parameters [E] gets applied to arguments [], phase = namer for (selectedDocument <- listView.peer.getSelectedValuesList) {
我因为在ListView中猜测这是,对不带参数类型定义的:
I'm guessing this is because in ListView, peer is defined without type parameter:
override lazy val peer: JList = new JList with SuperMixin
所以,问题是:这是不可能使用从斯卡拉摆幅ListView控件与Java 7?
So the question is: is it impossible to use the ListView from scala-swing with Java 7?
推荐答案
通过扩展Scala的ListView和增加一个类型等解决了这个问题。
Solved this issue by extending Scala's ListView and adding a "typed peer".
class ExtendedListView[A: ClassManifest] extends ListView[A] {
lazy val typedPeer: JList[A] = peer.asInstanceOf[JList[A]]
def selectionEmpty = typedPeer.isSelectionEmpty
// Other functions omitted
}
伟大工程!
这篇关于从斯卡拉2.9.2使用ListView控件与Java 7给出编译错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!