2013-10-29 74 views
0

我在從階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。

我覺得我已經嘗試了這個組合框沒有任何的運氣一百萬的東西..

+1

http://stackoverflow.com/questions/8068119/scala-compiler-build-error-jcombobox-type-parameters也許這仍然是這種情況。 – Kigyo

回答

0

我終於解決了這個問題的靈感來自這個問題 Using ListView from Scala 2.9.2 with Java 7 gives compile error

代碼現在看起來是這樣的:

... 
object ScenarioComboBox { 
    private val model = new javax.swing.DefaultComboBoxModel[MutableScenario] 
} 
class ScenarioComboBox extends ComboBox[MutableScenario](Seq(new MutableScenario("", Map()))) { 
    import ScenarioComboBox.model 
    lazy val typedPeer: JComboBox[MutableScenario] = peer.asInstanceOf[JComboBox[MutableScenario]] 
    typedPeer.setModel(model) 
... 

而且我現在能夠成功地編譯和斯卡拉2.9.3使用JDK運行,整個項目1.7