我不明白爲什麼下面的一段代碼編譯而另一段沒有編譯。這兩位代碼有什麼區別?
不編譯一個(編譯器說的方法KeyBidings()需要返回類型):
public KeyBidings(){
Action rightAction = new AbstractAction(){
public void actionPreformed(ActionEvent e){
x+=10;
drawPanel.repaint();
}
};
Action leftAction = new AbstractAction(){
public void actionPreformed(ActionEvent e){
x-=10;
drawPanel.repaint();
}
};
InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = drawPanel.getActionMap();
inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
actionMap.put("rightAction", rightAction);
inputMap.put(KeyStroke.getKeyStroke("LEFT"), "leftAction");
actionMap.put("leftAction", leftAction);
add(drawPanel);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(640, 480);
setTitle("Game");
setLocationRelativeTo(null);
setVisible(true);
}
這編譯就好了一句:
public KeyBidings(){
Action rightAction = new AbstractAction(){
public void actionPerformed(ActionEvent e) {
x +=10;
drawPanel.repaint();
}
};
InputMap inputMap = drawPanel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = drawPanel.getActionMap();
inputMap.put(KeyStroke.getKeyStroke("RIGHT"), "rightAction");
actionMap.put("rightAction", rightAction);
add(drawPanel);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
編輯:我不知道構造函數和方法之間的區別,但現在我有另一個問題:https://gyazo.com/cd3c21a8562589451814903febaf89fe
這裏有什麼問題?我已經在下面列出了兩個類的源代碼。
源代碼1:http://pastebin.com/vwNtJZEG 源代碼2:http://pastebin.com/nL4SbtkM
另外請務必閱讀[Java命名約定](http://www.oracle.com/technetwork/java/codeconventions-135099.html):方法應該以小寫字母開頭。這使得更容易區分方法和構造函數(可能從另一個類複製粘貼)。 – Kenney
這些代碼片段中的每個片段的名稱是什麼?他們在同一班嗎?有人可能在一個叫做「KeyBindings」的類中(工作中)而另一個不是? –
@CaptainMan我編輯了這篇文章,幷包含了這兩個類的源代碼。 –