Witam mam następujący problem, a mianowicie. Chciałbym po naciśnięciu przycisku Aby w oknie pokazywał się obrazek lecz wyskakuje błąd. Błędy występują w podkreślonych miejscach kodu.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at komorka2.mms$1.actionPerformed(mms.java:117)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package komorka2;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
/**
*
* @author czarek
*/
public final class mms extends JFrame {
JFileChooser fc;
ImagePanel imgpanel;
boolean im=false;
JPanel panel=new JPanel();
DefaultListModel listaModel;
JButton dodajOdb = new JButton("Wstaw odbiorce");
JTextField poleSms = new JTextField();
JLabel napisOdb = new JLabel("MMS do: ");
JTextField poleOdb = new JTextField();
JButton wyslijSms = new JButton("Wyślij mms");
JButton wstawObrazek = new JButton("Wstaw obrazek");
private BufferedImage image;
String dane="";
BufferedImage ikona;
JLabel obrazek=new JLabel();;
//JFileChooser fileChooser ;
public mms(){
super("MMS");
setSize(520,700);
setResizable(false);
getContentPane().setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
panel.setBorder(BorderFactory.createEmptyBorder());
panel.setBackground (new Color(0,50,50));
listaModel = new DefaultListModel();
final JList lista=new JList(listaModel);
lista.setBackground(new Color(155,155,255));
napisOdb.setForeground(Color.GREEN);
lista.setBounds(350, 150, 150, 300);
dodajOdb.setBounds(350, 500, 150, 30);
poleSms.setBounds(50, 200, 100, 100);
obrazek.setBounds(100, 100, 100, 100);
napisOdb.setBounds(150, 50, 100, 50);
poleOdb.setBounds(250, 65, 150, 20);
poleOdb.setEditable(false);
wyslijSms.setBounds(100, 500, 150, 30);
wstawObrazek.setBounds(100, 450, 150, 30);
fc=new JFileChooser();
wstawObrazek.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int returnVal = fc.showOpenDialog(mms.this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
File file = fc.getSelectedFile();
try
{
Image tmp = ImageIO.read(file);
__ **BufferedImage bi = (BufferedImage) imgpanel.createImage(350, 300);**__
Graphics2D g = bi.createGraphics();
g.drawImage(tmp.getScaledInstance(350, 300, Image.SCALE_SMOOTH), 0, 0, null);
g.dispose();
__ **imgpanel.setImage(bi);
imgpanel.revalidate();
imgpanel.repaint();**__
}
catch(IOException e1)
{
JOptionPane.showMessageDialog(null, e1.getMessage());
return;
}}
}});
panel.add(lista);
panel.add(dodajOdb);
panel.add(poleSms);
panel.add(napisOdb);
panel.add(poleOdb);
panel.add(wyslijSms);
panel.add(wstawObrazek);
panel.add(obrazek);
// panel2.add(fileChooser);
add(panel);
panel.setLayout(null);
repaint();
}
}
class ImagePanel extends JPanel {
Image img;
public ImagePanel(Image img)
{
setImage(img);
}
public void setImage(Image img)
{
if(img!=null)
{
this.setPreferredSize(new Dimension(img.getWidth(null), img.getHeight(null)));
this.img = img;
}}
public Image getImage()
{
return img;
}
public void paint(Graphics g)
{
g.drawImage(img, 0, 0, null);
}
}