从斯卡拉2.9.2使用ListView控件与Java 7给出编译错误 [英] Using ListView from Scala 2.9.2 with Java 7 gives compile error

查看:152
本文介绍了从斯卡拉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给出编译错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆