привязка клавиш перестает работать всякий раз, когда вы нажимаете кнопку тестирования, но если вы переместите строку «новый Gameloop» за пределы кнопки, все будет работать нормально.
Я попробовал сделать кнопку нефокусируемой, как Я думал, что это проблема с фокусом, хотя сочетания клавиш должны работать даже без основного фокуса, но это не сработало
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
public class Main {
public static JFrame force = new JFrame();
public static Rectangle player = new Rectangle(10,10,10,10);
public static void main(String[] args) {
force.setUndecorated(true);
force.setLayout(null);
force.setFocusable(true);
force.setSize(1000,1000);
// only using right for this example
Rightmove right = new Rightmove();
InputMap in = force.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
in.put(KeyStroke.getKeyStroke('d'),"right");
ActionMap am = force.getRootPane().getActionMap();
am.put("right",right);
JButton test = new JButton("test");
test.setFocusable(false);
force.add(test);
test.setBounds(100,100,100,50);
test.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Gameloop();
}
});
force.setVisible(true);
}
static class Rightmove extends AbstractAction{
public Rightmove() {
System.out.println("test");
}
public void actionPerformed(ActionEvent e){
player.x += 4;
}
}
private static class Gameloop{
public Gameloop(){
while (true){
force.requestFocus();
try {
Thread.sleep(1);
} catch (InterruptedException ignored) {
}
BufferedImage image = new BufferedImage(1000,1000,BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.drawRect(player.x,player.y,player.width,player.height);
g = force.getGraphics();
g.drawImage(image,0,0,null);
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... t-to-false
Привязки клавиш не работают после нажатия кнопки даже после того, как фокус на кнопке установлен на false ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение