Я не могу ввести данные с клавиатуры, не знаю почему. Пожалуйста, исправьте мой код, чтобы он работал.
В своей программе я создаю окно, расширяющее JFrame, затем я создаю панель, расширяющую JPanel, затем добавляю панель в свое окно. В Panel реализован KeyListener, а также запрошенный фокус.
Это мой основной класс:
package dev.thomaslienbacher.spacefighter;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Timer;
public class Main {
public static Window window;
public static Panel panel;
public static int width = 0;
public static int height = 0;
public static final int FPS = 35;
public static void main(String[] args) {
panel = new Panel(FRAMEWIDTH, FRAMEHEIGHT);
ArrayList icons = new ArrayList();
icons.add(Utils.getImage("res/icon8.png"));
gameMechanics = new GameMechanics();
window = new Window(title, 606, 700, icons);
window.add(panel);
width = window.getContentPane().getSize().width;
height = window.getContentPane().getSize().height;
Timer gameLoopTimer = new Timer(1000 / FPS, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
panel.repaint();
panel.actionPerformed(null);
}}
);
gameLoopTimer.start();
}
}
Это мой класс Window:
package dev.thomaslienbacher.spacefighter;
import java.util.ArrayList;
import javax.swing.JFrame;
public class Window extends JFrame{
public Window(String title, int width, int height, ArrayList icons){
super(title);
this.setFocusable(true);
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setIconImages(icons);
this.setCursor(cross);
}
}
Это мой класс Panel:
package dev.thomaslienbacher.spacefighter;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class Panel extends JPanel implements ActionListener, KeyListener{
public Panel(int width, int height) {
this.setBackground(Color.BLACK);
this.setFocusable(true);
this.addKeyListener(this);
this.setBounds(0, 0, width, height);
this.requestFocusInWindow();
this.requestFocus();
}
@Override
public void paint(Graphics g) {
super.paint(g);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Released");
}
@Override
public void keyTyped(KeyEvent e) {
}
}
Подробнее здесь: https://stackoverflow.com/questions/414 ... sed-jpanel
Невозможно ввести ввод с клавиатуры в сфокусированную JPanel ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1721829900
Anonymous
Я не могу ввести данные с клавиатуры, не знаю почему. Пожалуйста, исправьте мой код, чтобы он работал.
В своей программе я создаю окно, расширяющее JFrame, затем я создаю панель, расширяющую JPanel, затем добавляю панель в свое окно. В Panel реализован KeyListener, а также запрошенный фокус.
Это мой основной класс:
package dev.thomaslienbacher.spacefighter;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Timer;
public class Main {
public static Window window;
public static Panel panel;
public static int width = 0;
public static int height = 0;
public static final int FPS = 35;
public static void main(String[] args) {
panel = new Panel(FRAMEWIDTH, FRAMEHEIGHT);
ArrayList icons = new ArrayList();
icons.add(Utils.getImage("res/icon8.png"));
gameMechanics = new GameMechanics();
window = new Window(title, 606, 700, icons);
window.add(panel);
width = window.getContentPane().getSize().width;
height = window.getContentPane().getSize().height;
Timer gameLoopTimer = new Timer(1000 / FPS, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
panel.repaint();
panel.actionPerformed(null);
}}
);
gameLoopTimer.start();
}
}
Это мой класс Window:
package dev.thomaslienbacher.spacefighter;
import java.util.ArrayList;
import javax.swing.JFrame;
public class Window extends JFrame{
public Window(String title, int width, int height, ArrayList icons){
super(title);
this.setFocusable(true);
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setIconImages(icons);
this.setCursor(cross);
}
}
Это мой класс Panel:
package dev.thomaslienbacher.spacefighter;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class Panel extends JPanel implements ActionListener, KeyListener{
public Panel(int width, int height) {
this.setBackground(Color.BLACK);
this.setFocusable(true);
this.addKeyListener(this);
this.setBounds(0, 0, width, height);
this.requestFocusInWindow();
this.requestFocus();
}
@Override
public void paint(Graphics g) {
super.paint(g);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Released");
}
@Override
public void keyTyped(KeyEvent e) {
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/41451230/cant-get-keyboard-input-to-focused-jpanel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия