我在從階2.7.7升級舊階擺動應用2.9.3的過程和JDK 1.6至優選的jdk 1.7 ..類型不匹配的組合框階
我能夠運行與該應用程序舊的設置,我幾乎成功升級了IntelliJ IDEA 12.1中的scala 2.9.3和jdk 1.7的應用程序。
但我一直遇到與組合框的問題。
肇事者文件:在該行
Type mismatch, expected: ComboBoxModel[E], actual: DefaultComboBoxModel[Nothing]
:
package gui
import gui.model.scenario._
import swing._
object ScenarioComboBox {
private val model = new javax.swing.DefaultComboBoxModel
}
class ScenarioComboBox extends ComboBox[MutableScenario](Seq(new MutableScenario("", Map()))) {
import ScenarioComboBox.model
peer.setModel(model)
private val dataModel = model.asInstanceOf[javax.swing.DefaultComboBoxModel]
def contents = {
var list: List[MutableScenario] = Nil
val size = dataModel.getSize
(0 to size - 1).foreach { index =>
list = list ::: List(dataModel.getElementAt(index).asInstanceOf[MutableScenario])
}
list
}
def contents_=(v: List[MutableScenario]) {
dataModel.removeAllElements
v map dataModel.addElement
}
def selectedItem = dataModel.getSelectedItem.asInstanceOf[MutableScenario] match {
case null => None
case s => Some(s)
}
def selectedItem_=(v: Option[MutableScenario]) {
v match {
case Some(s) => dataModel setSelectedItem s
case None => dataModel setSelectedItem null
}
selection.publish(swing.event.SelectionChanged(this))
}
listenTo(selection)
}
一開始,在JDK 1.7的IntelliJ給出以下警告
peer.setModel(model)
當我編譯源與這個文件,因爲它,然後我得到以下錯誤,與jdk 1.6和1.7:
something is wrong (wrong class file?): class JComboBox with type parameters [E] gets applied to arguments [], phase = typer
peer.setModel(model)
^
我似乎得到類型不匹配錯誤和/或無法使這段代碼編譯,無論我嘗試修復組合框。 (例如我嘗試了在這個問題提出的想法Editing Combobox Scala)
我不是原來的代碼的作者,我只是剛剛在過去的兩週學到了scala和swing。
我覺得我已經嘗試了這個組合框沒有任何的運氣一百萬的東西..
http://stackoverflow.com/questions/8068119/scala-compiler-build-error-jcombobox-type-parameters也許這仍然是這種情況。 – Kigyo