Help me in correctinf the errror i encounter here, i want the image file i have selected using Jfilechooser to be set on the image panel.
i tried this but it failed: picthandler.setImageIcon(file);
Here is the class Code , i have commented exaclty whr i want the bug to be fixed [
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.Object.*;
import javax.swing.border.*;
import java.awt.Toolkit;
import java.awt.Cursor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.Cursor;
import java.text.*;
import java.sql.*;
import java.lang.Object.*;
import java.awt.Image.*;
import java.awt.Image;
import javax.swing.ImageIcon;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.*;
import java.text.*;
import java.math.*;
import javax.swing.filechooser.*;
import java.io.*;
import java.io.File;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileFilter;
public class addOfficer extends JFrame
{
private JTextField fnametxt;
private JTextField surnametxt;
private JTextField dobtxt;
private JTextField addresstxt;
private JLabel fnamelbl;
private JLabel snamelbl;
private JLabel doblbl;
private JLabel addresslbl;
private JLabel qualificationlbl;
private JPanel picthandler;
private JRadioButton malerbtn;
private JRadioButton femalerbtn;
private JButton b;
private JLabel idlbl;
private JTextField sntxt;
private JSeparator line1;
private JButton bckbtn;
private JButton clearbtn;
private JButton open;
private JButton exitbtn;
private JButton savebtn;
private JButton logoutbtn;
private JLabel datelbl;
private JTextField datetxt;
private JTextField qualificationtxt;
private JComboBox rankbox;
private JSeparator line2;
private JComboBox smokerbox;
private JComboBox marital;
private JFileChooser fc;
private Image img;
static private final String newline = "\n";
public addOfficer()
{
MouseHandler mousehandler = new MouseHandler();
try
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch (Exception ex)
{
JOptionPane.showMessageDialog(null,"Failed loading L&F: ");
JOptionPane.showMessageDialog(null,ex);
}
//construct preComponents
String[] rankboxItems = {"------------Rank-------------", "Warder", "Sergent", "Sub-Inspector", "Inspector", "A/Supritendant", "Supritendant", "S/Supritendant", "A/ACP", "ACP", "S/ACP", "D/CP", "SD/CP", "Comissioner"};
String[] smokerboxItems = {"----------Smoking-----------", "Smoker", "Non-Smoker"};
String[] maritalItems = {"--------Marital Status--------", "Single", "Married", "Divorced"};
//construct components
// frontpanel = new JPanel();
// frontpanel.setLayout(null);
// frontpanel.setBorder(BorderFactory.createLoweredBevelBorder());
// setBorder(new TitledBorder("ORPHAN REGISTRATION SYSTEM"));
//add (frontpanel);
//frontpanel.setBounds (40, 150, 300 ,310);
fnametxt = new JTextField (5);
surnametxt = new JTextField (5);
dobtxt = new JTextField (5);
addresstxt = new JTextField (5);
fnamelbl = new JLabel ("Firstname :");
fnamelbl.setForeground(Color.black);
fnamelbl.setFont(new Font ("Tahoma",Font.BOLD,12));
snamelbl = new JLabel ("Surname :");
snamelbl.setForeground(Color.black);
snamelbl.setFont(new Font ("Tahoma",Font.BOLD,12));
doblbl = new JLabel ("D.O.B :");
doblbl.setForeground(Color.black);
doblbl.setFont(new Font ("Tahoma",Font.BOLD,12));
addresslbl = new JLabel ("Address :");
addresslbl.setForeground(Color.black);
addresslbl.setFont(new Font ("Tahoma",Font.BOLD,12));
qualificationlbl = new JLabel ("Qualification:");
qualificationlbl.setForeground(Color.black);
qualificationlbl.setFont(new Font ("Tahoma",Font.BOLD,12));
picthandler = new JPanel ();
malerbtn = new JRadioButton ("Male");
malerbtn.setForeground(Color.black);
malerbtn.setFont(new Font ("Tahoma",Font.BOLD,10));
femalerbtn = new JRadioButton ("Female");
femalerbtn.setForeground(Color.black);
femalerbtn.setFont(new Font ("Tahoma",Font.BOLD,10));
b = new JButton ("Gender");
idlbl = new JLabel ("Service No :");
idlbl.setForeground(Color.black);
idlbl.setFont(new Font ("Tahoma",Font.BOLD,12));
sntxt = new JTextField (5);
line1 = new JSeparator ();
bckbtn = new JButton ("Back");
bckbtn.addMouseListener(mousehandler);
bckbtn.setForeground(Color.black);
bckbtn.setFont(new Font ("Tahoma",Font.BOLD,12));
bckbtn.setIcon(new ImageIcon("icons/back.png"));
clearbtn = new JButton ("Clear");
clearbtn.addMouseListener(mousehandler);
clearbtn.setForeground(Color.black);
clearbtn.setFont(new Font ("Tahoma",Font.BOLD,12));
clearbtn.setIcon(new ImageIcon("icons/clear.png"));
exitbtn = new JButton ("Exit");
exitbtn.addMouseListener(mousehandler);
exitbtn.setForeground(Color.black);
exitbtn.setFont(new Font ("Tahoma",Font.BOLD,12));
exitbtn.setIcon(new ImageIcon("icons/Exit.png"));
open = new JButton ("Load Photo");
open.addMouseListener(mousehandler);
open.setForeground(Color.black);
open.setFont(new Font ("Tahoma",Font.BOLD,12));
open.setIcon(new ImageIcon("icons/open.png"));
savebtn = new JButton ("Save");
savebtn.addMouseListener(mousehandler);
savebtn.setForeground(Color.black);
savebtn.setFont(new Font ("Tahoma",Font.BOLD,12));
savebtn.setIcon(new ImageIcon("icons/save.png"));
logoutbtn = new JButton ("Logout");
logoutbtn.addMouseListener(mousehandler);
logoutbtn.setForeground(Color.black);
logoutbtn.setFont(new Font ("Tahoma",Font.BOLD,12));
logoutbtn.setIcon(new ImageIcon("icons/lock.png"));
datelbl = new JLabel ("Date Entered :");
datelbl.setForeground(Color.black);
datelbl.setFont(new Font ("Tahoma",Font.BOLD,12));
datetxt = new JTextField (5);
qualificationtxt = new JTextField (5);
rankbox = new JComboBox (rankboxItems);
rankbox.addMouseListener(mousehandler);
rankbox.setForeground(Color.black);
rankbox.setFont(new Font ("Tahoma",Font.BOLD,10));
line2 = new JSeparator ();
fc = new JFileChooser( );
smokerbox = new JComboBox (smokerboxItems);
smokerbox.addMouseListener(mousehandler);
smokerbox.setForeground(Color.black);
smokerbox.setFont(new Font ("Tahoma",Font.BOLD,10));
marital = new JComboBox (maritalItems);
marital.addMouseListener(mousehandler);
marital.setForeground(Color.black);
marital.setFont(new Font ("Tahoma",Font.BOLD,10));
JLabel footer = new JLabel();
footer.setIcon(new ImageIcon("icons/header.png"));
add(footer);
footer.setBounds(-50,580,800,200);
JLabel header = new JLabel();
header.setIcon(new ImageIcon("icons/header3.png"));
add(header);
header.setBounds(-50,-130,800,200);
//set components properties
fnametxt.setToolTipText ("Enter Officer Firstname");
surnametxt.setToolTipText ("Enter Officer Surname");
dobtxt.setToolTipText ("Enter Officer Date of Birth");
addresstxt.setToolTipText ("Enter Officer Address");
picthandler.setToolTipText ("Handles pictures");
malerbtn.setToolTipText ("Tick if Officer is male");
femalerbtn.setToolTipText ("Tick if Officer is female");
b.setEnabled (false);
b.setToolTipText ("Select Gender");
sntxt.setToolTipText ("Enter Officer service No");
bckbtn.setToolTipText ("Back to main Window");
clearbtn.setToolTipText ("Reset All data fields");
exitbtn.setToolTipText ("Quit PMS system");
open.setToolTipText ("Load a Photo of an Officer");
savebtn.setToolTipText ("Save Officers details ");
logoutbtn.setToolTipText ("Logout system");
datetxt.setToolTipText ("Click to enter Current Date");
qualificationtxt.setToolTipText ("Enter Officer qualification");
rankbox.setToolTipText ("Select Rank");
smokerbox.setToolTipText ("Select if Officer is a Smoker");
//adjust size and set layout
setIconImage (getToolkit().getImage ("icons/logo.png"));
//getContentPane(). setBackground(Color.LIGHT_GRAY);
setTitle("Prison Management System");
setPreferredSize (new Dimension (748, 654));
setLayout (null);
//add components
add (fnametxt);
add (open);
add (surnametxt);
add (dobtxt);
add (addresstxt);
add (fnamelbl);
add (snamelbl);
add (doblbl);
add (addresslbl);
add (qualificationlbl);
add (picthandler);
add (malerbtn);
add (femalerbtn);
add (b);
add (idlbl);
add (sntxt);
add (line1);
add (bckbtn);
add (clearbtn);
add (exitbtn);
add (savebtn);
add (logoutbtn);
add (datelbl);
add (datetxt);
add (qualificationtxt);
add (rankbox);
add (line2);
add (smokerbox);
add (marital);
//set component bounds (only needed by Absolute Positioning)
fnametxt.setBounds (140, 115, 160, 20);
surnametxt.setBounds (140, 145, 160, 20);
dobtxt.setBounds (140, 175, 160, 20);
addresstxt.setBounds (140, 205, 160, 20);
fnamelbl.setBounds (40, 115, 80, 20);
snamelbl.setBounds (40, 140, 80, 25);
doblbl.setBounds (40, 175, 60, 20);
addresslbl.setBounds (40, 200, 70, 25);
qualificationlbl.setBounds (40, 235, 80, 20);
picthandler.setBounds (410, 75, 250, 170);
malerbtn.setBounds (140, 395, 65, 20);
femalerbtn.setBounds (220, 395, 75, 20);
b.setBounds (115, 340, 205, 65);
idlbl.setBounds (40, 290, 100, 25);
sntxt.setBounds (140, 295, 160, 20);
line1.setBounds (-10, 535, 755, 15);
bckbtn.setBounds (40, 565, 100, 25);
clearbtn.setBounds (495, 565, 105, 25);
exitbtn.setBounds (620, 565, 100, 25);
savebtn.setBounds (330, 555, 125, 35);
logoutbtn.setBounds (195, 560, 100, 25);
datelbl.setBounds (40, 260, 95, 25);
datetxt.setBounds (140, 265, 160, 20);
qualificationtxt.setBounds (140, 235, 160, 20);
rankbox.setBounds (485, 310, 170, 25);
line2.setBounds (-10, 50, 755, 35);
smokerbox.setBounds (485, 360, 170, 25);
marital.setBounds (485, 410, 170, 25);
open. setBounds (410, 255, 250, 20);
datetxt.addFocusListener(new FocusHandler());
// Add action handling tio buttons & combo's
ButtonHandler Handler = new ButtonHandler();
open.addActionListener(Handler);
}
class FocusHandler implements FocusListener
{
java.util.Date today=new java.util.Date();
DateFormat format=DateFormat.getDateInstance();
String formatted=format.format(today);
public void focusGained(FocusEvent e)
{
Object obj=(JTextField)e.getSource();
if(obj==datetxt)
{
datetxt.setText(formatted);
}
}
public void focusLost(FocusEvent e)
{
}
}
public class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == open)
{
int returnVal = fc.showOpenDialog(addOfficer.this);
if (returnVal == JFileChooser.APPROVE_OPTION)
{
//This is where a real application would open the file.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
File file = fc.getSelectedFile();
picthandler.setImageIcon(file);
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
JOptionPane.showMessageDialog(null,
"Photo Loaded Susccesfully!",
"PMS Notifications",
JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(null,
"Open command cancelled by user!",
"PMS Notifications",
JOptionPane.INFORMATION_MESSAGE);
}
// picthandler.setCaretPosition(picthandler.getDocument().getLength());
}
}
}
/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path)
{
java.net.URL imgURL = addOfficer.class.getResource(path);
if (imgURL != null)
{
return new ImageIcon(imgURL);
}
else
{
JOptionPane.showMessageDialog(null,"Couldn't find file: " + path);
return null;
}
}
/*
* ===========================================
* MAIN FUNCTION OF THE ADD OFFICER CLASS
* ===========================================
*/
public static void main (String[] args)
{
addOfficer frame = new addOfficer ();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible (true);
frame.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
if (JOptionPane.showConfirmDialog(new JFrame(),
"Are you sure you want to quit the PMS System ?",
"PMS Exit Confirmation",
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
System.exit(0);
}
});
}
}