Привязки клавиш не работают после нажатия кнопки даже после того, как фокус на кнопке установлен на falseJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Привязки клавиш не работают после нажатия кнопки даже после того, как фокус на кнопке установлен на false

Сообщение Anonymous »

привязка клавиш перестает работать всякий раз, когда вы нажимаете кнопку тестирования, но если вы переместите строку «новый 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»