How to display image in Java?

I would like to build a program in Java that can choose image file from folder and display it in the pane..how to do this?
thank u.
lotus03Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

TolsCommented:
This is sample code:


.....
ImageIcon image = new ImageIcon("someimage.gif");
JLabel label = new JLabel();
label.setIcon(image);
.....


:)
JavatmCommented:
InNoCenT_Ch1ldCommented:
how bout calling the JPanel paintComponent method?? can it work?
OWASP: Avoiding Hacker Tricks

Learn to build secure applications from the mindset of the hacker and avoid being exploited.

jimmackCommented:
To choose your file, use a JFileChooser (in the javax.swing package)
lotus03Author Commented:
thanks Javatm..
I have implement it in my program... but why the image can't be inserted?
When I try to insert Image, it will pop out a dialog box .. after I chosed the selected image file.. and click Open.. it seems like nothing happen.. coz the image still haven't being inserted.. why?
Anything wrong with my code? Thanks.

Below is my code:
============================
package Editor1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import java.io.*;
import java.util.*;

import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.text.html.*;

public class UI1 extends JFrame {
  public static final String APP_NAME = "JSP Editor";
  protected JTextPane m_editor;
  protected StyleSheet m_context;
  protected HTMLDocument m_doc;
  protected HTMLEditorKit m_kit;
 // protected SimpleFilter m_htmlFilter;
  protected JToolBar m_toolBar;

  protected JFileChooser m_chooser;
  protected File  m_currentFile;
  protected boolean m_textChanged = false;


  public UI1() {
    super(APP_NAME);
    m_editor = new JTextPane();
    m_kit = new HTMLEditorKit();
    m_editor.setEditorKit(m_kit);

    JScrollPane ps = new JScrollPane(m_editor);
    getContentPane().add(ps, BorderLayout.CENTER);



    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    JMenu fileMenu = new JMenu( "File" );
    fileMenu.setMnemonic( 'F' );

    //JMenuItem newItem = new JMenuItem("New");
  //  newItem.setMnemonic('n');
    //fileMenu.add(newItem);

    ImageIcon iconNew = new ImageIcon("New16.gif");
                Action actionNew = new AbstractAction("New", iconNew) {
                        public void actionPerformed(ActionEvent e) {
                                if (!promptToSave())
                                        return;
                                newDocument();
                        }
                };
                JMenuItem newItem = new JMenuItem(actionNew);
               newItem.setMnemonic('n');
                newItem.setAccelerator(KeyStroke.getKeyStroke(
                        KeyEvent.VK_N, InputEvent.CTRL_MASK));
                fileMenu.add(newItem);

JMenuItem openItem = new JMenuItem("Open");
    openItem.setMnemonic('O');
    fileMenu.add(openItem);
    JMenuItem closeItem = new JMenuItem("Close");
    closeItem.setMnemonic('L');
    fileMenu.add(closeItem);
    fileMenu.addSeparator();

    JMenuItem saveItem = new JMenuItem("Save");
    saveItem.setMnemonic('S');
    fileMenu.add(saveItem);
    JMenuItem saveAsItem = new JMenuItem("Save As");
    saveAsItem.setMnemonic('A');
    fileMenu.add(saveAsItem);
    fileMenu.addSeparator();

    JMenuItem printCodeItem = new JMenuItem("Print Code");
    printCodeItem.setMnemonic('P');
    fileMenu.add(printCodeItem);
    JMenuItem previewItem = new JMenuItem("Preview");
    previewItem.setMnemonic('R');
    fileMenu.add(previewItem);
    fileMenu.addSeparator();

    JMenuItem exitItem = new JMenuItem("Exit");
    exitItem.setMnemonic('T');
    fileMenu.add(exitItem);

    JMenuBar bar = new JMenuBar();
    setJMenuBar(bar);
    bar.add(fileMenu);

    JMenu editMenu = new JMenu( "Edit" );
    editMenu.setMnemonic( 'E' );

    JMenuItem cutItem = new JMenuItem("Cut");
    cutItem.setMnemonic('X');
    editMenu.add(cutItem);
    JMenuItem copyItem = new JMenuItem("Copy");
    copyItem.setMnemonic('C');
    editMenu.add(copyItem);
    JMenuItem pasteItem = new JMenuItem("Paste");
    pasteItem.setMnemonic('V');
    editMenu.add(pasteItem);

    bar.add(editMenu);

    JMenu viewMenu = new JMenu( "View" );
    viewMenu.setMnemonic( 'I' );

    JMenuItem codeItem = new JMenuItem("Code");
    viewMenu.add(codeItem);
    JMenuItem designItem = new JMenuItem("Design");
    viewMenu.add(designItem);

    bar.add(viewMenu);

    JMenu insertMenu = new JMenu( "Insert" );

    JMenuItem imageItem = new JMenuItem("Image");
    insertMenu.add(imageItem);
    imageItem.addActionListener(new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doInsertImageCommand();
      }
    });
   bar.add(insertMenu);
 }

 public void doInsertImageCommand() {
   JFileChooser chooser = new JFileChooser();
   int status = chooser.showOpenDialog(this);
   if (status == JFileChooser.APPROVE_OPTION) {
     File file = chooser.getSelectedFile();
     Icon icon = new ImageIcon (file.getAbsolutePath());
     m_editor.insertIcon (icon);
   }
 }

 protected void newDocument() {
                m_doc = (HTMLDocument)m_kit.createDefaultDocument();
                m_context = m_doc.getStyleSheet();

                m_editor.setDocument(m_doc);
                m_currentFile = null;
                setTitle(APP_NAME+" ["+getDocumentName()+"]");

                SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                                m_editor.scrollRectToVisible(new Rectangle(0,0,1,1));
                                m_doc.addDocumentListener(new UpdateListener());
                                m_textChanged = false;
                        }
                });
        }
        protected void openDocument() {
                    if (m_chooser.showOpenDialog(UI1.this) !=
                            JFileChooser.APPROVE_OPTION)
                            return;
                    File f = m_chooser.getSelectedFile();
                    if (f == null || !f.isFile())
                            return;
                    m_currentFile = f;
                    setTitle(APP_NAME+" ["+getDocumentName()+"]");

                    UI1.this.setCursor(
                            Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                    // Can't do this in thread - Pavel
                    try {
                            InputStream in = new FileInputStream(m_currentFile);
                            m_doc = (HTMLDocument)m_kit.createDefaultDocument();
                            m_kit.read(in, m_doc, 0);
                            m_context = m_doc.getStyleSheet();
                            m_editor.setDocument(m_doc);
                            in.close();
                    }
                    catch (Exception ex) {
                            showError(ex, "Error reading file "+m_currentFile);
                    }
                    UI1.this.setCursor(Cursor.getPredefinedCursor(
                            Cursor.DEFAULT_CURSOR));

                    SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                    m_editor.setCaretPosition(1);
                                    m_editor.scrollRectToVisible(new Rectangle(0,0,1,1));
                                    m_doc.addDocumentListener(new UpdateListener());
                                    m_textChanged = false;
                            }
                    });
            }

            class UpdateListener implements DocumentListener {

                public void insertUpdate(DocumentEvent e) {
                        m_textChanged = true;
                }

                public void removeUpdate(DocumentEvent e) {
                        m_textChanged = true;
                }

                public void changedUpdate(DocumentEvent e) {
                        m_textChanged = true;
                }
        }


            protected boolean promptToSave() {
                         if (!m_textChanged)
                                 return true;
                         /*int result = JOptionPane.showConfirmDialog(this,
                                 "Save changes to "+getDocumentName()+"?",
                                 APP_NAME, JOptionPane.YES_NO_CANCEL_OPTION,
                                 JOptionPane.INFORMATION_MESSAGE);
                         switch (result) {
                         case JOptionPane.YES_OPTION:
                                 if (!saveFile(false))
                                         return false;
                                 return true;
                         case JOptionPane.NO_OPTION:
                                 return true;
                         case JOptionPane.CANCEL_OPTION:
                                 return false;
                         }    */
                         return true;
                 }


  protected String getDocumentName() {
                               return m_currentFile==null ? "Untitled" :
                                       m_currentFile.getName();
                       }

public void showError(Exception ex, String message) {
                                       ex.printStackTrace();
                                       JOptionPane.showMessageDialog(this,
                                               message, APP_NAME,
                                               JOptionPane.WARNING_MESSAGE);
                               }


   public static void main(String[] args) {
    // UI1 frame1 = new UI1();
    // frame1.show();


   JFrame.setDefaultLookAndFeelDecorated(true);
   JDialog.setDefaultLookAndFeelDecorated(true);

   UI1 frame1 = new UI1();
   frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
   frame1.setVisible(true);

   }



   private void jbInit() throws Exception {
      setSize(new Dimension(800, 600));
      setVisible(true);
      this.setResizable(false);
      this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
      show();
  }
}
=================================================
JavatmCommented:
Try to implement this 1st w/o package ok :)
Also try different kind of image format like .jpg .gif & other format.
Checked on what version of jdk do you use.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.io.*;
import java.util.*;

public class Formatter extends JFrame {
  final static int WIDTH = 400;
  final static int HEIGHT = 300;
  StyledDocument doc;
  JTextPane pane;
  JLabel statusInfo;

  public Formatter(String lab) {
    super (lab);

    // Get ContentPane
    Container c = getContentPane();

    // Setup Status Message Area
    statusInfo = new JLabel();
    c.add (statusInfo, BorderLayout.SOUTH);

    // Setup Text Pane
    doc = new DefaultStyledDocument();
    pane = new JTextPane (doc);

    // Place in JScrollPane
    JScrollPane sp = new JScrollPane (pane);
    c.add(sp, BorderLayout.CENTER);

    // Setup Menus
    JMenuBar menuBar = new JMenuBar();
    setJMenuBar (menuBar);

    // Setup File Menu
    JMenu file = new JMenu ("File");
    JMenuItem item;
    file.add (item = new JMenuItem ("New"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doNewCommand();
      }
    });
    file.add (item = new JMenuItem ("Open"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doOpenCommand();
      }
    });
    file.add (item = new JMenuItem ("Load Text"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doLoadCommand();
      }
    });
    file.add (item = new JMenuItem ("Save"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doSaveCommand();
      }
    });
    file.addSeparator();
    file.add (item = new JMenuItem ("Close"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doCloseCommand();
      }
    });
    menuBar.add (file);

    // Setup Color Menu
    JMenu color = new JMenu("Color");
    color.add (item = new JMenuItem ("Red"));
    item.setIcon (new ColoredBox(Color.red));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-red", Color.red));
    color.add (item = new JMenuItem ("Orange"));
    item.setIcon (new ColoredBox(Color.orange));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-orange", Color.orange));
    color.add (item = new JMenuItem ("Yellow"));
    item.setIcon (new ColoredBox(Color.yellow));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-yellow", Color.yellow));
    color.add (item = new JMenuItem ("Green"));
    item.setIcon (new ColoredBox(Color.green));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-green", Color.green));
    color.add (item = new JMenuItem ("Blue"));
    item.setIcon (new ColoredBox(Color.blue));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-blue", Color.blue));
    color.add (item = new JMenuItem ("Magenta"));
    item.setIcon (new ColoredBox(Color.magenta));
    item.addActionListener (new
      StyledEditorKit.ForegroundAction (
        "set-foreground-magenta", Color.magenta));
    color.add (item = new JMenuItem ("Custom Color"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doColorCommand();
      }
    });

    menuBar.add (color);

    // Setup Font Menu
    JMenu font = new JMenu("Font");
    font.add (item = new JMenuItem ("12"));
    item.addActionListener (new
      StyledEditorKit.FontSizeAction (
        "font-size-12", 12));
    font.add (item = new JMenuItem ("24"));
    item.addActionListener (new
      StyledEditorKit.FontSizeAction (
        "font-size-24", 24));
    font.add (item = new JMenuItem ("36"));
    item.addActionListener (new
      StyledEditorKit.FontSizeAction (
        "font-size-36", 36));
    font.addSeparator();
    font.add (item = new JMenuItem ("Serif"));
    item.setFont (new Font ("Serif", Font.PLAIN, 12));
    item.addActionListener (new
      StyledEditorKit.FontFamilyAction (
        "font-family-Serif", "Serif"));
    font.add (item = new JMenuItem ("SansSerif"));
    item.setFont (new Font ("SansSerif", Font.PLAIN, 12));
    item.addActionListener (new
      StyledEditorKit.FontFamilyAction (
        "font-family-SansSerif", "SansSerif"));
    font.add (item = new JMenuItem ("Monospaced"));
    item.setFont (new Font ("Monospaced", Font.PLAIN, 12));
    item.addActionListener (new
      StyledEditorKit.FontFamilyAction (
        "font-family-Monospaced", "Monospaced"));
    font.addSeparator();
    font.add (item = new JMenuItem ("Bold"));
    item.setFont (new Font ("Serif", Font.BOLD, 12));
    item.addActionListener (
      new StyledEditorKit.BoldAction ());
    font.add (item = new JMenuItem ("Italic"));
    item.setFont (new Font ("Serif", Font.ITALIC, 12));
    item.addActionListener (
      new StyledEditorKit.ItalicAction ());
/* Add once FontChooser is available
    font.addSeparator();
    font.add (item = new JMenuItem ("Custom Font"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doFontCommand();
      }
    });
*/
    menuBar.add (font);

    // Setup Insert Menu
    JMenu insert = new JMenu("Insert");
    insert.add (item = new JMenuItem ("Image File"));
    item.addActionListener (new ActionListener() {
      public void actionPerformed (ActionEvent e) {
        doInsertImageCommand();
      }
    });
    menuBar.add (insert);
  }

  public static void main (String args[]) {
    Formatter frame = new Formatter("Mini Text Editor");
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {System.exit(0);}
    });
    frame.setSize(WIDTH, HEIGHT);
    frame.setVisible(true);
  }

  public void doNewCommand() {
    pane.setStyledDocument (doc = new DefaultStyledDocument());
  }

  public void doCloseCommand() {
    System.exit (0);
  }

  public void doOpenCommand() {
    try {
      FileInputStream fis = new FileInputStream ("doc.ser");
      ObjectInputStream ois = new ObjectInputStream (fis);
      doc = (StyledDocument)ois.readObject();
      ois.close();
      pane.setStyledDocument (doc);
      validate();
      statusInfo.setText ("Reloaded from disk");
    } catch (Exception e) {
      statusInfo.setText ("Unable to reload");
      e.printStackTrace();
    }
  }

  public void doSaveCommand() {
    try {
      FileOutputStream fos = new FileOutputStream ("doc.ser");
      ObjectOutputStream oos = new ObjectOutputStream (fos);
      oos.writeObject (doc);
      oos.flush();
      oos.close();
      statusInfo.setText ("Saved to disk");
    } catch (IOException e) {
      statusInfo.setText ("Unable to save");
      e.printStackTrace();
    }
  }

  public void doLoadCommand() {
    String msg;
    JFileChooser chooser = new JFileChooser();
    int status = chooser.showOpenDialog(this);
    if (status == JFileChooser.APPROVE_OPTION) {
      char data[];
      final Runnable doWaitCursor = new Runnable() {
        public void run() {
          setCursor (Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        }
      };
      Thread appThread = new Thread() {
        public void run() {
          try {
             SwingUtilities.invokeAndWait(doWaitCursor);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      };
      appThread.start();
      File f = chooser.getSelectedFile();
      try {
        // Clear out current document
        pane.setStyledDocument (doc = new DefaultStyledDocument());
        // Read in text file
        FileReader fin = new FileReader (f);
        BufferedReader br = new BufferedReader (fin);
        char buffer[] = new char[4096];
        int len;
        while ((len = br.read (buffer, 0, buffer.length)) != -1) {
          // Insert into pane
          doc.insertString(doc.getLength(),
            new String (buffer, 0, len), null);
        }
        statusInfo.setText ("Loaded: " + f.getName());
      } catch (BadLocationException exc) {
        statusInfo.setText ("Error loading: " + f.getName());
      } catch (FileNotFoundException exc) {
        statusInfo.setText ("File Not Found: " + f.getName());
      } catch (IOException exc) {
        statusInfo.setText ("IOException: " + f.getName());
      }
      final Runnable undoWaitCursor = new Runnable() {
        public void run() {
        setCursor (Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
        }
      };
      appThread = new Thread() {
        public void run() {
          try {
             SwingUtilities.invokeAndWait(undoWaitCursor);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      };
      appThread.start();
    }
  }

/*
  public void doFontCommand() {
    Font font = FontChooser.ask (
      this, "Change font", getFont(), null);
    if (font != null) {
      MutableAttributeSet attr = new SimpleAttributeSet();
      StyleConstants.setFontFamily (attr, font.getFamily());
      StyleConstants.setFontSize (attr, font.getSize());
      StyleConstants.setBold (attr, font.isBold());
      StyleConstants.setItalic (attr, font.isItalic());
      pane.setCharacterAttributes(attr, false);
    }
  }
*/

  public void doColorCommand() {
    Color color = JColorChooser.showDialog(
      this, "Color Chooser", Color.cyan);
    if (color != null) {
      MutableAttributeSet attr = new SimpleAttributeSet();
      StyleConstants.setForeground(attr, color);
      pane.setCharacterAttributes(attr, false);
    }
  }

  public void doInsertImageCommand() {
    JFileChooser chooser = new JFileChooser();
    int status = chooser.showOpenDialog(this);
    if (status == JFileChooser.APPROVE_OPTION) {
      File file = chooser.getSelectedFile();
      Icon icon = new ImageIcon (file.getAbsolutePath());
      pane.insertIcon (icon);
    }
  }

  class ColoredBox implements Icon {
    Color color;
    public ColoredBox (Color c) {
      color = c;
    }
    public void paintIcon (Component c, Graphics g, int x, int y) {
      g.setColor(color);
      g.fillRect (x, y, getIconWidth(), getIconHeight());
    }
    public int getIconWidth() {
      return 10;
    }
    public int getIconHeight() {
      return 10;
    }
  }
}
JavatmCommented:
" Sometimes debuging codes can be hard but the one who always give dedication wins. " 
  Javatm
lotus03Author Commented:
I have try the one withot package, is ok.. I mean it's can insert image..
But then after I try to implement in my package.. and inserting the same image .. it can't.. why?
thanks..
JavatmCommented:
>> how to do this?
     I just gave you a sample :)
     fixing the codes is a seperate question
     hope you understand
gnoonCommented:
iam not sure what happened but after i comment the command m_editor.setEditorKit(m_kit);, it works fine.

public UI1() {
    super(APP_NAME);
    m_editor = new JTextPane();
    e_kit = m_editor.getEditorKit();
    m_kit = new HTMLEditorKit();
    //m_editor.setEditorKit(m_kit); <--- comment this

i think it's better to use the default EditorKit of JTextPane than HTMLEditorKit.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
lotus03Author Commented:
Thanks everyone!!
Actually the credits should go to evryone since you all really have gave me a big help on it..
but since this question should based on "How to insert image.." so, Javatm get most of the point.. but Can gnoon drop a message in my next question , that is "What's wrong with my Java code..", so that I could give u the other points.. Thank you!!
lotus03Author Commented:
gnoon, pls go here and drop a comment there and get extra points for your help.. Thanks a lot..
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_20804725.html
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.