Вывод картинок в яве (продолжение темы - Глобальные переменные keylistener) - Java

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

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

Здравствуйте! необходима загрузка картинок на форму, потом их смена при нажатии на клавиши, а так же(в листинге не реализована) проигрывание мелодии на форме. выдает ошибку Exception in thread "main" java.lang.NullPointerException.
Листинг программы
  1. package my3000;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import java.io.*;
  5. import javax.imageio.*;
  6. import java.awt.event.*;
  7. /**
  8. *
  9. * @author maxim
  10. */
  11. public class My3000 {
  12. /**
  13. * @param args
  14. * the command line arguments
  15. */
  16. public static void main(String[] args) {
  17. DataClass.index=false;
  18. System.out.println("dcwdc");
  19. MyFrame frame = new MyFrame();
  20. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21. frame.setVisible(true);
  22. frame.addKeyListener(new KeyListener() {
  23. @SuppressWarnings("empty-statement")
  24. public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
  25. {
  26. char c;
  27. c = ke.getKeyChar();
  28. System.out.println("Get key char: " + c);
  29. switch (c) {
  30. case 'a':
  31. DataClass.path = "C:/1.jpg";
  32. break;
  33. case 'd':
  34. DataClass.path = "ccccc";
  35. break;
  36. }
  37. }
  38. public void keyPressed(KeyEvent ke) {
  39. }
  40. public void keyReleased(KeyEvent ke) {
  41. }
  42.  
  43. });
  44. // TODO code application logic here
  45. }
  46. }
  47. class MyFrame extends JFrame {
  48. public MyFrame() {
  49. setTitle("MainFraim");
  50. setSize(1300, 800);
  51. MyPanel panel = new MyPanel();
  52. Container pane = getContentPane();
  53. pane.add(panel);
  54. }
  55. }
  56. class DataClass {
  57. public static String path;
  58. public static boolean index;
  59. }
  60. class MyPanel extends JPanel {
  61. private Image im;
  62. public MyPanel() {
  63. try {
  64. im = ImageIO.read(new File(DataClass.path));
  65. } catch (IOException exception) {
  66. }
  67. }
  68. public void paintComponent (Graphics g) {
  69. super.paintComponent(g);
  70. g.drawImage(im,22,22,null);
  71. g.drawString(DataClass.path, 112, 12);
  72. setSize(1200,800);
  73. repaint();
  74. }
  75. }

Решение задачи: «Вывод картинок в яве (продолжение темы - Глобальные переменные keylistener)»

textual
Листинг программы
  1. package my3000;
  2.  
  3. import java.awt.Container;
  4. import java.awt.Graphics;
  5. import java.awt.Image;
  6. import java.awt.event.KeyEvent;
  7. import java.awt.event.KeyListener;
  8. import java.io.File;
  9. import java.io.IOException;
  10.  
  11. import javax.imageio.ImageIO;
  12. import javax.swing.JFrame;
  13. import javax.swing.JPanel;
  14. /**
  15.  *
  16.  * @author maxim
  17.  */
  18.  
  19. public class My3000 {
  20.  
  21.     /**
  22.      * @param args
  23.      *            the command line arguments
  24.      */
  25.     public static void main(String[] args) {
  26.         DataClass.index=false;
  27.        
  28.         System.out.println("dcwdc");
  29.         MyFrame frame = new MyFrame();
  30.        
  31.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  32.        
  33.         frame.setVisible(true);
  34.        
  35.         frame.addKeyListener(new KeyListener() {
  36.             @SuppressWarnings("empty-statement")
  37.             public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
  38.             {
  39.                 char c;
  40.                 c = ke.getKeyChar();
  41.                
  42.                 System.out.println("Get key char: " + c);
  43.                 switch (c) {
  44.                 case 'a':
  45.                    
  46.                     DataClass.path = "image/matroskyn.png";
  47.  
  48.                     break;
  49.                 case 'd':
  50.                     DataClass.path = "ccccc";
  51.                    
  52.                     break;
  53.                 }
  54.             }
  55.  
  56.             public void keyPressed(KeyEvent ke) {
  57.             }
  58.  
  59.             public void keyReleased(KeyEvent ke) {
  60.             }
  61.  
  62.          
  63.  
  64.         });
  65.         // TODO code application logic here
  66.     }
  67.  
  68. }
  69.  
  70. class MyFrame extends JFrame {
  71.     public MyFrame() {
  72.          
  73.         setTitle("MainFraim");
  74.         setSize(1300, 800);
  75.         MyPanel panel = new MyPanel();
  76.         Container pane = getContentPane();
  77.         pane.add(panel);
  78.     }
  79. }
  80.  
  81. class DataClass {
  82.     public static String path;
  83.     public static boolean index;
  84. }
  85.  
  86. class MyPanel extends JPanel {
  87.  
  88.     private Image im;
  89.  
  90.     public MyPanel() {
  91.         DataClass.path = "";
  92.        
  93.     }
  94.  
  95.     public void paintComponent (Graphics g) {  
  96.             super.paintComponent(g);
  97.            
  98.            
  99.             if (DataClass.path.contains("/")) { // если путь имеет косую черту
  100.                 try {
  101.                     im = ImageIO.read(new File(DataClass.path));
  102.                 } catch (IOException exception) {
  103.                    
  104.                 }
  105.                
  106.                 g.drawImage(im,22,22,null);
  107.             }
  108.            
  109.             g.drawString(DataClass.path, 112, 12);
  110.             setSize(1200,800);
  111.             repaint();
  112.     }
  113. }

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


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

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

8   голосов , оценка 4 из 5

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

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

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