次のコードのうちの1つがコンパイルされ、もう1つがコンパイルされない理由を理解できません。これらの2つのコードの違いは何ですか?
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);
}
そして、ちょうど罰金コンパイル1:
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);
}
EDIT:
コンパイルしないものは、(コンパイラは、メソッドKeyBidings()は戻り値の型を必要と言う)Iコンストラクタとメソッドの違いはわかりませんでしたが、別の問題が発生しました: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
これらのスニペットのそれぞれに含まれるクラスの名前は何ですか?彼らは同じクラスですか? 1つはおそらくクラスの中で 'KeyBindings'(働いているもの)と呼ばれているのでしょうか? –
@CaptainMan投稿を編集し、両方のクラスのソースコードを編集しました。 –