привязка клавиш перестает работать всякий раз, когда вы нажимаете кнопку тестирования, но если вы переместите строку «новый 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
Программисты JAVA общаются здесь
1734455468
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);
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79288509/keybinds-not-working-after-clicking-button-even-after-the-focus-is-set-to-false[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия