キーバインドされたアクションを持つ JLabel があります。いくつかのアクションに対していくつかのコードを定義しましたが、残念ながら、メソッド内 (これは main() にあります) 内に他の JLabels、JPanel、およびその他のものがあります。
アクションをパラメーターを受け取るように変更しようとしましたが、成功しませんでした。操作するパラメーターを受け取るアクションを取得するにはどうすればよいですか? 何か方法はありますか?私は見てきましたが、これはかなり具体的であり、良い例はほとんどありません。
ここに私のコードの素敵なスラブがあります:
/*Bunch of stuff I want my actions to interact with above - another JLabel, a JPanel*/
ImageIcon cursor = new ImageIcon("cursor.gif");
JLabel cursorlbl = new JLabel("", cursor, JLabel.CENTER);
Action goRight = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("lol");
}
};
Action goLeft = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("lol2");
}
};
Action goUp = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
}
};
Action goDown = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("lol2");
}
};
cursorlbl.setFocusable(true);
cursorlbl.getInputMap().put(KeyStroke.getKeyStroke("RIGHT"),
"pressed right");
cursorlbl.getInputMap().put(KeyStroke.getKeyStroke("LEFT"),
"pressed left");
cursorlbl.getActionMap().put("pressed right", goRight);
cursorlbl.getActionMap().put("pressed left", goLeft);