Вывод картинок в яве (продолжение темы - Глобальные переменные 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();
}
}