KeyEventsを使ってImageIconを移動しようとすると、なぜ動作しないのか分かりません。私がしたい、 "A"キーを押すと、私のイメージを左に動かす。ActionEvent - KeyEventに問題がありますか?
これは、ヘルパーにより研磨し、私のコードです:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
public class MainClass extends AbstractAction {
JLabel label;
int x = 300;
int y = 300;
public MainClass() {
final JPanel panel = new JPanel();
final ImageIcon image = new ImageIcon("Character Face Left - Bronze.png");
label = new JLabel(image,JLabel.CENTER);
label.setSize(500,500);
label.setLocation(x, y);
final JFrame frame = new JFrame("Rover: Bound to Earth");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.add(label);
frame.setSize(500, 500);
frame.setVisible(true);
InputMap inputMap = panel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = panel.getActionMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), "LEFT");
actionMap.put("LEFT", this);
}
@Override
public void actionPerformed(ActionEvent e) {
x -= 10;
label.setLocation(x, y);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> { new MainClass(); });
}
}
だから、あなたのコードで、どのように私は、画像を変更するのでしょうか?例えば、 "LEFT"キーを押すと、この画像を持っています: ImageIcon characterLeft = new ImageIcon( "Character Face Left.png"); "RIGHT"キーを押すと、この画像に切り替える必要があります。 ImageIcon characterRight = new ImageIcon( "Character Face Right.png"); –
押されたキーに基づいてラベルイメージを変更する方法を示すコードを更新しました。 –
KeyListenerを使用しないでください。これはAWTの古いソリューションです。 Swingの "Key Bindings"ソリューションは、より新しい、より良いソリューションです。新しいAPIが利用可能になったらそれを使用します。私の答えで提供したチュートリアルのリンクを読んでください。また、 'Key Bindingsの使い方'のセクションもあります。 – camickr