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