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

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

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

Здравствуйте! необходима загрузка картинок на форму, потом их смена при нажатии на клавиши, а так же(в листинге не реализована) проигрывание мелодии на форме. выдает ошибку Exception in thread "main" java.lang.NullPointerException.
package my3000;
 
import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
 
import java.awt.event.*;
/**
 *
 * @author maxim
 */
 
public class My3000 {
 
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        DataClass.index=false;
        
        System.out.println("dcwdc");
        MyFrame frame = new MyFrame();
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        frame.setVisible(true);
        
        frame.addKeyListener(new KeyListener() {
            @SuppressWarnings("empty-statement")
            public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
            {
                char c;
                c = ke.getKeyChar();
                
                System.out.println("Get key char: " + c);
                switch (c) {
                case 'a': 
                   
                    DataClass.path = "C:/1.jpg";
 
                    break;
                case 'd':
                    DataClass.path = "ccccc";
                    break;
                }
            }
 
            public void keyPressed(KeyEvent ke) {
            }
 
            public void keyReleased(KeyEvent ke) {
            }

        });
        // TODO code application logic here
    }
 
}
 
class MyFrame extends JFrame {
    public MyFrame() {
         
        setTitle("MainFraim");
        setSize(1300, 800);
        MyPanel panel = new MyPanel();
        Container pane = getContentPane();
        pane.add(panel);
    }
}
 
class DataClass {
    public static String path;
    public static boolean index;
}
 
class MyPanel extends JPanel {
 
    private Image im;
 
    public MyPanel() {
        
        try {
            im = ImageIO.read(new File(DataClass.path));
        } catch (IOException exception) {
            
        }
    } 
 
    public void paintComponent (Graphics g) {  
            super.paintComponent(g);
            g.drawImage(im,22,22,null);
            g.drawString(DataClass.path, 112, 12);
            setSize(1200,800);
            repaint();
    }
}

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

textual
Листинг программы
package my3000;
 
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 *
 * @author maxim
 */
 
public class My3000 {
 
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {
        DataClass.index=false;
        
        System.out.println("dcwdc");
        MyFrame frame = new MyFrame();
        
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        frame.setVisible(true);
        
        frame.addKeyListener(new KeyListener() {
            @SuppressWarnings("empty-statement")
            public void keyTyped(KeyEvent ke) // обработка нажатий клавиш
            {
                char c;
                c = ke.getKeyChar();
                
                System.out.println("Get key char: " + c);
                switch (c) {
                case 'a': 
                   
                    DataClass.path = "image/matroskyn.png";
 
                    break;
                case 'd':
                    DataClass.path = "ccccc";
                    
                    break;
                }
            }
 
            public void keyPressed(KeyEvent ke) {
            }
 
            public void keyReleased(KeyEvent ke) {
            }
 
          
 
        });
        // TODO code application logic here
    }
 
}
 
class MyFrame extends JFrame {
    public MyFrame() {
         
        setTitle("MainFraim");
        setSize(1300, 800);
        MyPanel panel = new MyPanel();
        Container pane = getContentPane();
        pane.add(panel);
    }
}
 
class DataClass {
    public static String path;
    public static boolean index;
}
 
class MyPanel extends JPanel {
 
    private Image im;
 
    public MyPanel() {
        DataClass.path = "";
        
    } 
 
    public void paintComponent (Graphics g) {  
            super.paintComponent(g);
            
            
            if (DataClass.path.contains("/")) { // если путь имеет косую черту
                try {
                    im = ImageIO.read(new File(DataClass.path));
                } catch (IOException exception) {
                    
                }
                
                g.drawImage(im,22,22,null);
            }
            
            g.drawString(DataClass.path, 112, 12);
            setSize(1200,800);
            repaint();
    }
}

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


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

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

8   голосов , оценка 4 из 5
Похожие ответы