0
我要像下面的Java代碼翻譯成斯卡拉:NullPointerException異常Scala的類的構造函數訪問VAL場時
private HashMap<KeyStroke,Action>actionMap=new HashMap<KeyStroke,Action>();
KeyStroke left = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0);
//....
actionMap.put(left, new AbstractAction("move left") {
@Override
public void actionPerformed(ActionEvent e) {
doSomething();
}
}
我最初的嘗試是這樣的:
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.KeyEvent
import java.awt._
import javax.swing.JFrame
import javax.swing.JPanel
import javax.swing.Action
import javax.swing.AbstractAction
import javax.swing.KeyStroke
import collection.mutable.HashMap
object Main{
def main(args:Array[String]){
val gui:GUI = new GUI()
}
}
class GUI extends JFrame{
initKeyboard
pack
this.setVisible(true)
private val actionMap = new HashMap[KeyStroke,Action]
def initKeyboard{
val left = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT,0)
actionMap.put(left, new AbstractAction("Move Left"){
override def actionPerformed(e:ActionEvent){
println("Do something")
}
})//actionMap.put
}
}
請注意,我沒有但是編寫了代碼來處理actionMap。
但是我得到以下運行時錯誤:
Java.lang.NullPointerException
at GUI.initKeyboard(Game.scala:24)
at GUI.<init>(Game.scala:18)
at Main$.main(Game.scala:13)
at Main.main(Game.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
(注意,第24行是啓動「actionMap.put」行)
如何來實施?
請提供自站立,重複的例子。 –
因爲它代表着你的代碼是不可執行的(我們不知道'GUI'看起來如何),所以沒有人可以看到你做錯了什麼。只要執行這三條線就行。 –
請看我最近的編輯;) – user2547306