KeyListener перестал работать - Java
Формулировка задачи:
Здравствуйте, имеется такая проблема, что программа работает через раз. Раньше все работало, картинки при нажатии менялись, но когда я добавил slogn и a вообще какие-либо действия не происходят.
Листинг программы
- import javax.imageio.*;
- import java.io.*;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- public class keyboard {
- public static void main(String[] args) {
- final JFrame okno = new JFrame();
- class TestActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- okno.dispose();
- }
- }
- java.net.URL imgURL = keyboard.class.getResource("/GUI/icon.png");
- okno.setIconImage(new ImageIcon(imgURL).getImage());
- okno.setUndecorated(true);
- myPanel np = new myPanel();
- okno.add(np);
- okno.setSize(286, 159);
- okno.setLocationRelativeTo(null);
- okno.setVisible(true);
- okno.setAlwaysOnTop(true);
- JButton button = new JButton();
- button.setSize(50,50);
- button.setLocation(235,1);
- ImageIcon img3 = new ImageIcon(myPanel.class.getResource("/GUI/kn.png"));
- button.setIcon(img3);
- button.setOpaque(false);
- button.setFocusPainted(false);
- button.setBorderPainted(false);
- button.setContentAreaFilled(false);
- button.setFocusable(false);
- ActionListener actionListener = new TestActionListener();
- button.addActionListener(actionListener);
- np.add(button);
- okno.setFocusable(true);
- okno.setFocusableWindowState(true);
- }
- }
- class myPanel extends JPanel
- {
- Image i1; Image i2; Image i3; Image i4; int slogn = 0;
- java.net.URL img1 = myPanel.class.getResource("/GUI/boss.png");
- java.net.URL im1 = myPanel.class.getResource("/GUI/keys/W.png");
- java.net.URL im2 = myPanel.class.getResource("/GUI/keys/S.png");
- java.net.URL im3 = myPanel.class.getResource("/GUI/keys/D.png");
- java.net.URL im4 = myPanel.class.getResource("/GUI/keys/A.png");
- java.net.URL im5 = myPanel.class.getResource("/GUI/keys_red/W.png");
- java.net.URL im6 = myPanel.class.getResource("/GUI/keys_red/S.png");
- java.net.URL im7 = myPanel.class.getResource("/GUI/keys_red/D.png");
- java.net.URL im8 = myPanel.class.getResource("/GUI/keys_red/A.png");
- java.net.URL im9 = myPanel.class.getResource("/GUI/kn.png");
- {
- try
- {
- i1 = ImageIO.read(im1);
- }
- catch(IOException exp) {}
- try
- {
- i2 = ImageIO.read(im2);
- }
- catch(IOException exp) {}
- try
- {
- i3 = ImageIO.read(im3);
- }
- catch(IOException exp) {}
- try
- {
- i4 = ImageIO.read(im4);
- }
- catch(IOException exp) {}
- }
- myKey keys = new myKey();
- public myPanel()
- {
- setLayout(null);
- setBackground(Color.PINK);
- addKeyListener(keys);
- setFocusable(true);
- Timer nt = new Timer(1,new ActionListener(){
- public void actionPerformed(ActionEvent e){
- repaint();
- }
- });
- nt.start();
- }
- class myKey implements KeyListener
- {
- public void keyPressed(KeyEvent e)
- {
- int key_ = e.getKeyCode();
- if(key_==87){
- try
- {
- i1 = ImageIO.read(im5);
- }
- catch(IOException exp1) {}
- slogn+=1;
- }
- if(key_==83){
- try
- {
- i2 = ImageIO.read(im6);
- }
- catch(IOException exp1) {}
- }
- if(key_==68){
- try
- {
- i3 = ImageIO.read(im7);
- }
- catch(IOException exp1) {}
- }
- if(key_==65){
- try
- {
- i4 = ImageIO.read(im8);
- }
- catch(IOException exp1) {}
- }
- }
- public void keyReleased(KeyEvent e){
- int ke_ = e.getKeyCode();
- if(ke_==87){
- try
- {
- i1 = ImageIO.read(im1);
- }
- catch(IOException exp1) {}
- }
- if(ke_==83){
- try
- {
- i2 = ImageIO.read(im2);
- }
- catch(IOException exp1) {}
- }
- if(ke_==68){
- try
- {
- i3 = ImageIO.read(im3);
- }
- catch(IOException exp1) {}
- }
- if(ke_==65){
- try
- {
- i4 = ImageIO.read(im4);
- }
- catch(IOException exp1) {}
- }
- }
- public void keyTyped(KeyEvent e) {}
- }
- public void paintComponent(Graphics gr)
- {
- super.paintComponent(gr);
- Font f = new Font("TimesRoman", Font.BOLD, 10);
- gr.setFont(f);
- gr.setColor(Color.BLACK);
- gr.drawString("W нажата:", 1, 15);
- String a = Integer.toString(slogn);
- gr.drawString(a, 51, 15);
- gr.drawString("раз(а)", 65,15);
- gr.drawImage(i1,96,1, null);
- gr.drawImage(i2,96,80, null);
- gr.drawImage(i3,191,80, null);
- gr.drawImage(i4,1,80, null);
- }
- }
Решение задачи: «KeyListener перестал работать»
textual
Листинг программы
- import javax.imageio.*;
- import java.io.*;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- public class keyboard{
- public static void main(String[] args) {
- final JFrame okno = new JFrame();
- class TestActionListener implements ActionListener {
- public void actionPerformed(ActionEvent e) {
- okno.dispose();
- }
- }
- java.net.URL imgURL = keyboard.class.getResource("/GUI/icon.png");
- okno.setIconImage(new ImageIcon(imgURL).getImage());
- okno.setUndecorated(true);
- myPanel np = new myPanel();
- okno.add(np);
- okno.setSize(297, 159);
- okno.setLocationRelativeTo(null);
- okno.setVisible(true);
- JButton close = new JButton();
- close.setSize(50,50);
- close.setLocation(246,1);
- ImageIcon img3 = new ImageIcon(myPanel.class.getResource("/GUI/kn.png"));
- close.setIcon(img3);
- close.setOpaque(false);
- close.setFocusPainted(false);
- close.setBorderPainted(false);
- close.setContentAreaFilled(false);
- close.setFocusable(false);
- ActionListener actionListener = new TestActionListener();
- close.addActionListener(actionListener);
- np.add(close);
- okno.setFocusable(true);
- okno.setFocusableWindowState(true);
- }
- }
- class myPanel extends JPanel
- {
- Image i1; Image i2; Image i3; Image i4;
- int kol1 = 0;
- int kol2 = 0;
- int kol3 = 0;
- int kol4 = 0;
- java.net.URL im1 = myPanel.class.getResource("/GUI/keys/W.png");
- java.net.URL im2 = myPanel.class.getResource("/GUI/keys/S.png");
- java.net.URL im3 = myPanel.class.getResource("/GUI/keys/D.png");
- java.net.URL im4 = myPanel.class.getResource("/GUI/keys/A.png");
- java.net.URL im5 = myPanel.class.getResource("/GUI/keys_red/W.png");
- java.net.URL im6 = myPanel.class.getResource("/GUI/keys_red/S.png");
- java.net.URL im7 = myPanel.class.getResource("/GUI/keys_red/D.png");
- java.net.URL im8 = myPanel.class.getResource("/GUI/keys_red/A.png");
- {
- try
- {
- i1 = ImageIO.read(im1);
- }
- catch(IOException exp) {}
- try
- {
- i2 = ImageIO.read(im2);
- }
- catch(IOException exp) {}
- try
- {
- i3 = ImageIO.read(im3);
- }
- catch(IOException exp) {}
- try
- {
- i4 = ImageIO.read(im4);
- }
- catch(IOException exp) {}
- }
- myKey keys = new myKey();
- public myPanel()
- {
- requestFocus();
- setLayout(null);
- setBackground(Color.PINK);
- addKeyListener(keys);
- setFocusable(true);
- Timer nt = new Timer(1,new ActionListener(){
- public void actionPerformed(ActionEvent e){
- repaint();
- }
- });
- nt.start();
- }
- class myKey implements KeyListener
- {
- public void keyPressed(KeyEvent e)
- {
- int key_ = e.getKeyCode();
- if(key_==87){
- try
- {
- i1 = ImageIO.read(im5);
- }
- catch(IOException exp1) {}
- kol1+=1;
- if(kol1==100000)
- {
- JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
- kol1=0;
- try
- {
- i1 = ImageIO.read(im1);
- }
- catch(IOException exp1) {}
- }
- }
- if(key_==83){
- try
- {
- i2 = ImageIO.read(im6);
- }
- catch(IOException exp1) {}
- kol2+=1;
- if(kol2==100000)
- {
- JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
- kol2=0;
- try
- {
- i2 = ImageIO.read(im2);
- }
- catch(IOException exp1) {}
- }
- }
- if(key_==68){
- try
- {
- i3 = ImageIO.read(im7);
- }
- catch(IOException exp1) {}
- kol3+=1;
- if(kol3==100000)
- {
- JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
- kol3=0;
- try
- {
- i3 = ImageIO.read(im3);
- }
- catch(IOException exp1) {}
- }
- }
- if(key_==65){
- try
- {
- i4 = ImageIO.read(im8);
- }
- catch(IOException exp1) {}
- kol4+=1;
- if(kol4==100000)
- {
- JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
- kol4=0;
- try
- {
- i4 = ImageIO.read(im4);
- }
- catch(IOException exp1) {}
- }
- }
- }
- public void keyReleased(KeyEvent e){
- int ke_ = e.getKeyCode();
- if(ke_==87){
- try
- {
- i1 = ImageIO.read(im1);
- }
- catch(IOException exp1) {}
- }
- if(ke_==83){
- try
- {
- i2 = ImageIO.read(im2);
- }
- catch(IOException exp1) {}
- }
- if(ke_==68){
- try
- {
- i3 = ImageIO.read(im3);
- }
- catch(IOException exp1) {}
- }
- if(ke_==65){
- try
- {
- i4 = ImageIO.read(im4);
- }
- catch(IOException exp1) {}
- }
- }
- public void keyTyped(KeyEvent e) {}
- }
- public void paintComponent(Graphics gr)
- {
- super.paintComponent(gr);
- Font f = new Font("TimesRoman", Font.BOLD, 9);
- gr.setFont(f);
- gr.setColor(Color.WHITE);
- gr.fillRect(0, 0, 104, 65);
- gr.setColor(Color.BLACK);
- gr.drawRect(0, 0, 104, 65);
- gr.drawString("W нажата:", 3, 15);
- String a = Integer.toString(kol1);
- gr.drawString(a, 48, 15);
- gr.drawString("раз(а)", 77,15);
- gr.drawString("S нажата:", 3, 30);
- String b = Integer.toString(kol2);
- gr.drawString(b, 48, 30);
- gr.drawString("раз(а)", 77,30);
- gr.drawString("D нажата:", 3, 45);
- String c = Integer.toString(kol3);
- gr.drawString(c, 48, 45);
- gr.drawString("раз(а)", 77,45);
- gr.drawString("A нажата:", 3, 60);
- String d = Integer.toString(kol4);
- gr.drawString(d, 48, 60);
- gr.drawString("раз(а)", 77,60);
- gr.drawImage(i1,107,1, null);
- gr.drawImage(i2,107,80, null);
- gr.drawImage(i3,202,80, null);
- gr.drawImage(i4,12,80, null);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д