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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д