KeyListener перестал работать - Java

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, имеется такая проблема, что программа работает через раз. Раньше все работало, картинки при нажатии менялись, но когда я добавил slogn и a вообще какие-либо действия не происходят.
Листинг программы
  1. import javax.imageio.*;
  2. import java.io.*;
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. public class keyboard {
  7. public static void main(String[] args) {
  8. final JFrame okno = new JFrame();
  9. class TestActionListener implements ActionListener {
  10. public void actionPerformed(ActionEvent e) {
  11. okno.dispose();
  12. }
  13. }
  14. java.net.URL imgURL = keyboard.class.getResource("/GUI/icon.png");
  15. okno.setIconImage(new ImageIcon(imgURL).getImage());
  16. okno.setUndecorated(true);
  17. myPanel np = new myPanel();
  18. okno.add(np);
  19. okno.setSize(286, 159);
  20. okno.setLocationRelativeTo(null);
  21. okno.setVisible(true);
  22. okno.setAlwaysOnTop(true);
  23. JButton button = new JButton();
  24. button.setSize(50,50);
  25. button.setLocation(235,1);
  26. ImageIcon img3 = new ImageIcon(myPanel.class.getResource("/GUI/kn.png"));
  27. button.setIcon(img3);
  28. button.setOpaque(false);
  29. button.setFocusPainted(false);
  30. button.setBorderPainted(false);
  31. button.setContentAreaFilled(false);
  32. button.setFocusable(false);
  33. ActionListener actionListener = new TestActionListener();
  34. button.addActionListener(actionListener);
  35. np.add(button);
  36. okno.setFocusable(true);
  37. okno.setFocusableWindowState(true);
  38. }
  39. }
  40. class myPanel extends JPanel
  41. {
  42. Image i1; Image i2; Image i3; Image i4; int slogn = 0;
  43. java.net.URL img1 = myPanel.class.getResource("/GUI/boss.png");
  44. java.net.URL im1 = myPanel.class.getResource("/GUI/keys/W.png");
  45. java.net.URL im2 = myPanel.class.getResource("/GUI/keys/S.png");
  46. java.net.URL im3 = myPanel.class.getResource("/GUI/keys/D.png");
  47. java.net.URL im4 = myPanel.class.getResource("/GUI/keys/A.png");
  48. java.net.URL im5 = myPanel.class.getResource("/GUI/keys_red/W.png");
  49. java.net.URL im6 = myPanel.class.getResource("/GUI/keys_red/S.png");
  50. java.net.URL im7 = myPanel.class.getResource("/GUI/keys_red/D.png");
  51. java.net.URL im8 = myPanel.class.getResource("/GUI/keys_red/A.png");
  52. java.net.URL im9 = myPanel.class.getResource("/GUI/kn.png");
  53. {
  54. try
  55. {
  56. i1 = ImageIO.read(im1);
  57. }
  58. catch(IOException exp) {}
  59. try
  60. {
  61. i2 = ImageIO.read(im2);
  62. }
  63. catch(IOException exp) {}
  64. try
  65. {
  66. i3 = ImageIO.read(im3);
  67. }
  68. catch(IOException exp) {}
  69. try
  70. {
  71. i4 = ImageIO.read(im4);
  72. }
  73. catch(IOException exp) {}
  74. }
  75. myKey keys = new myKey();
  76. public myPanel()
  77. {
  78. setLayout(null);
  79. setBackground(Color.PINK);
  80. addKeyListener(keys);
  81. setFocusable(true);
  82. Timer nt = new Timer(1,new ActionListener(){
  83. public void actionPerformed(ActionEvent e){
  84. repaint();
  85. }
  86. });
  87. nt.start();
  88. }
  89. class myKey implements KeyListener
  90. {
  91. public void keyPressed(KeyEvent e)
  92. {
  93. int key_ = e.getKeyCode();
  94. if(key_==87){
  95. try
  96. {
  97. i1 = ImageIO.read(im5);
  98. }
  99. catch(IOException exp1) {}
  100. slogn+=1;
  101. }
  102. if(key_==83){
  103. try
  104. {
  105. i2 = ImageIO.read(im6);
  106. }
  107. catch(IOException exp1) {}
  108. }
  109. if(key_==68){
  110. try
  111. {
  112. i3 = ImageIO.read(im7);
  113. }
  114. catch(IOException exp1) {}
  115. }
  116. if(key_==65){
  117. try
  118. {
  119. i4 = ImageIO.read(im8);
  120. }
  121. catch(IOException exp1) {}
  122. }
  123. }
  124. public void keyReleased(KeyEvent e){
  125. int ke_ = e.getKeyCode();
  126. if(ke_==87){
  127. try
  128. {
  129. i1 = ImageIO.read(im1);
  130. }
  131. catch(IOException exp1) {}
  132. }
  133. if(ke_==83){
  134. try
  135. {
  136. i2 = ImageIO.read(im2);
  137. }
  138. catch(IOException exp1) {}
  139. }
  140. if(ke_==68){
  141. try
  142. {
  143. i3 = ImageIO.read(im3);
  144. }
  145. catch(IOException exp1) {}
  146. }
  147. if(ke_==65){
  148. try
  149. {
  150. i4 = ImageIO.read(im4);
  151. }
  152. catch(IOException exp1) {}
  153. }
  154. }
  155. public void keyTyped(KeyEvent e) {}
  156. }
  157. public void paintComponent(Graphics gr)
  158. {
  159. super.paintComponent(gr);
  160. Font f = new Font("TimesRoman", Font.BOLD, 10);
  161. gr.setFont(f);
  162. gr.setColor(Color.BLACK);
  163. gr.drawString("W нажата:", 1, 15);
  164. String a = Integer.toString(slogn);
  165. gr.drawString(a, 51, 15);
  166. gr.drawString("раз(а)", 65,15);
  167. gr.drawImage(i1,96,1, null);
  168. gr.drawImage(i2,96,80, null);
  169. gr.drawImage(i3,191,80, null);
  170. gr.drawImage(i4,1,80, null);
  171. }
  172. }

Решение задачи: «KeyListener перестал работать»

textual
Листинг программы
  1. import javax.imageio.*;
  2. import java.io.*;
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6.  
  7. public class keyboard{
  8.     public static void main(String[] args) {
  9.         final JFrame okno = new JFrame();
  10.         class TestActionListener implements ActionListener {
  11.             public void actionPerformed(ActionEvent e) {
  12.                     okno.dispose();    
  13.             }
  14.        }
  15.         java.net.URL imgURL = keyboard.class.getResource("/GUI/icon.png");
  16.         okno.setIconImage(new ImageIcon(imgURL).getImage());
  17.         okno.setUndecorated(true);
  18.         myPanel np = new myPanel();
  19.         okno.add(np);
  20.         okno.setSize(297, 159);
  21.         okno.setLocationRelativeTo(null);
  22.         okno.setVisible(true);
  23.        
  24.         JButton close = new JButton();
  25.         close.setSize(50,50);
  26.         close.setLocation(246,1);
  27.         ImageIcon img3 = new ImageIcon(myPanel.class.getResource("/GUI/kn.png"));
  28.         close.setIcon(img3);
  29.         close.setOpaque(false);
  30.         close.setFocusPainted(false);
  31.         close.setBorderPainted(false);
  32.         close.setContentAreaFilled(false);
  33.         close.setFocusable(false);
  34.         ActionListener actionListener = new TestActionListener();
  35.         close.addActionListener(actionListener);
  36.         np.add(close);
  37.         okno.setFocusable(true);
  38.         okno.setFocusableWindowState(true);
  39.     }
  40. }
  41. class myPanel extends JPanel
  42. {
  43.     Image i1; Image i2; Image i3; Image i4;
  44.     int kol1 = 0;
  45.     int kol2 = 0;
  46.     int kol3 = 0;
  47.     int kol4 = 0;
  48.     java.net.URL im1 = myPanel.class.getResource("/GUI/keys/W.png");
  49.     java.net.URL im2 = myPanel.class.getResource("/GUI/keys/S.png");
  50.     java.net.URL im3 = myPanel.class.getResource("/GUI/keys/D.png");
  51.     java.net.URL im4 = myPanel.class.getResource("/GUI/keys/A.png");
  52.    
  53.     java.net.URL im5 = myPanel.class.getResource("/GUI/keys_red/W.png");
  54.     java.net.URL im6 = myPanel.class.getResource("/GUI/keys_red/S.png");
  55.     java.net.URL im7 = myPanel.class.getResource("/GUI/keys_red/D.png");
  56.     java.net.URL im8 = myPanel.class.getResource("/GUI/keys_red/A.png");
  57.  
  58.     {
  59.     try
  60.     {
  61.             i1 = ImageIO.read(im1);
  62.     }
  63.             catch(IOException exp) {}
  64.    
  65.     try
  66.     {
  67.             i2 = ImageIO.read(im2);
  68.     }
  69.             catch(IOException exp) {}
  70.    
  71.     try
  72.     {
  73.             i3 = ImageIO.read(im3);
  74.     }
  75.             catch(IOException exp) {}
  76.    
  77.     try
  78.     {
  79.             i4 = ImageIO.read(im4);
  80.     }
  81.             catch(IOException exp) {}
  82.     }
  83.  
  84.     myKey keys = new myKey();
  85.     public myPanel()
  86.     {
  87.         requestFocus();
  88.         setLayout(null);
  89.         setBackground(Color.PINK);
  90.         addKeyListener(keys);
  91.         setFocusable(true);
  92.             Timer nt = new Timer(1,new ActionListener(){
  93.                 public void actionPerformed(ActionEvent e){    
  94.                     repaint();
  95.                 }
  96.             });
  97.                 nt.start();
  98.                
  99.             }
  100.     class myKey implements KeyListener
  101.     {
  102.         public void keyPressed(KeyEvent e)
  103.         {
  104.             int key_ = e.getKeyCode();
  105.             if(key_==87){
  106.                 try
  107.                 {
  108.                     i1 = ImageIO.read(im5);
  109.                 }
  110.                     catch(IOException exp1) {}
  111.                 kol1+=1;
  112.                 if(kol1==100000)
  113.                 {
  114.                     JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
  115.                     kol1=0;
  116.                     try
  117.                     {
  118.                         i1 = ImageIO.read(im1);
  119.                     }
  120.                         catch(IOException exp1) {}
  121.                 }
  122.             }
  123.             if(key_==83){
  124.                 try
  125.                 {
  126.                     i2 = ImageIO.read(im6);
  127.                 }
  128.                     catch(IOException exp1) {}
  129.                 kol2+=1;
  130.                 if(kol2==100000)
  131.                 {
  132.                     JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
  133.                     kol2=0;
  134.                     try
  135.                     {
  136.                         i2 = ImageIO.read(im2);
  137.                     }
  138.                         catch(IOException exp1) {}
  139.                 }
  140.             }
  141.             if(key_==68){
  142.                 try
  143.                 {
  144.                     i3 = ImageIO.read(im7);
  145.                 }
  146.                     catch(IOException exp1) {}
  147.                 kol3+=1;
  148.                 if(kol3==100000)
  149.                 {
  150.                     JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
  151.                     kol3=0;
  152.                     try
  153.                     {
  154.                         i3 = ImageIO.read(im3);
  155.                     }
  156.                         catch(IOException exp1) {}
  157.                 }
  158.             }
  159.             if(key_==65){
  160.                 try
  161.                 {
  162.                     i4 = ImageIO.read(im8);
  163.                 }
  164.                     catch(IOException exp1) {}
  165.                 kol4+=1;
  166.                 if(kol4==100000)
  167.                 {
  168.                     JOptionPane.showMessageDialog(null, "Достигнуто максимальное число нажатий", "Внимание:", JOptionPane.OK_OPTION);
  169.                     kol4=0;
  170.                     try
  171.                     {
  172.                         i4 = ImageIO.read(im4);
  173.                     }
  174.                         catch(IOException exp1) {}
  175.                 }
  176.             }
  177.         }
  178.         public void keyReleased(KeyEvent e){
  179.             int ke_ = e.getKeyCode();
  180.             if(ke_==87){
  181.                 try
  182.                 {
  183.                     i1 = ImageIO.read(im1);
  184.                 }
  185.                     catch(IOException exp1) {}
  186.             }
  187.             if(ke_==83){
  188.                 try
  189.                 {
  190.                     i2 = ImageIO.read(im2);
  191.                 }
  192.                     catch(IOException exp1) {}
  193.             }
  194.             if(ke_==68){
  195.                 try
  196.                 {
  197.                     i3 = ImageIO.read(im3);
  198.                 }
  199.                     catch(IOException exp1) {}
  200.             }
  201.             if(ke_==65){
  202.                 try
  203.                 {
  204.                     i4 = ImageIO.read(im4);
  205.                 }
  206.                     catch(IOException exp1) {}
  207.             }
  208.         }
  209.         public void keyTyped(KeyEvent e) {}
  210.     }
  211.     public void paintComponent(Graphics gr)
  212.     {
  213.         super.paintComponent(gr);
  214.         Font f = new Font("TimesRoman", Font.BOLD, 9);
  215.         gr.setFont(f);
  216.         gr.setColor(Color.WHITE);
  217.         gr.fillRect(0, 0, 104, 65);
  218.         gr.setColor(Color.BLACK);
  219.         gr.drawRect(0, 0, 104, 65);
  220.        
  221.         gr.drawString("W нажата:", 3, 15);
  222.         String a = Integer.toString(kol1);
  223.         gr.drawString(a, 48, 15);
  224.         gr.drawString("раз(а)", 77,15);
  225.        
  226.         gr.drawString("S нажата:", 3, 30);
  227.         String b = Integer.toString(kol2);
  228.         gr.drawString(b, 48, 30);
  229.         gr.drawString("раз(а)", 77,30);
  230.        
  231.         gr.drawString("D нажата:", 3, 45);
  232.         String c = Integer.toString(kol3);
  233.         gr.drawString(c, 48, 45);
  234.         gr.drawString("раз(а)", 77,45);
  235.        
  236.         gr.drawString("A нажата:", 3, 60);
  237.         String d = Integer.toString(kol4);
  238.         gr.drawString(d, 48, 60);
  239.         gr.drawString("раз(а)", 77,60);
  240.        
  241.         gr.drawImage(i1,107,1, null);
  242.         gr.drawImage(i2,107,80, null);
  243.         gr.drawImage(i3,202,80, null);
  244.         gr.drawImage(i4,12,80, null);
  245.     }
  246. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут