	package components;

	import java.awt.GridLayout;
	import java.awt.event.WindowAdapter;
	import java.awt.event.WindowEvent;
	import javax.swing.JLabel;
	import javax.swing.JPanel;
	import javax.swing.JFrame;
	import javax.swing.ImageIcon;
	import javax.swing.UIManager;
	import javax.swing.SwingUtilities;


	public class Label extends JPanel {
	    public Label() {
	        super(new GridLayout(3,1));  //3 rows, 1 column
	        JLabel label1, label2, label3;
	        
	        ImageIcon icon = new ImageIcon("computer.png","hi");
	                                        //"a nice computer");

	        //Create the first label.
	        label1 = new JLabel("A label with Image AND Text.",
	                            icon,
	                            JLabel.CENTER);
	        //Set the position of its text, relative to its icon:
	        label1.setVerticalTextPosition(JLabel.BOTTOM);
	        label1.setHorizontalTextPosition(JLabel.CENTER);

	        //Create the other labels.
	        label2 = new JLabel("This is a label with just text...YAY!");
	        label3 = new JLabel(icon);

	        //Create tool tips, for the heck of it.
	        label1.setToolTipText("This label has both an image and text in it.");
	        label2.setToolTipText("This label only has text.");
	        label3.setToolTipText("This label only has an image.");

	        //Add the labels.
	        add(label1);
	        add(label2);
	        add(label3);
	    }

	    /** Returns an ImageIcon, or null if the path was invalid. */
	    protected static ImageIcon createImageIcon(String path,
	                                               String description) {
	        java.net.URL imgURL = Label.class.getResource(path);
	        if (imgURL != null) {
	            return new ImageIcon(imgURL, description);
	        } else {
	            System.err.println("Couldn't find file: " + path);
	            return null;
	        }
	    }

	    private static void createAndShowGUI() {
	        //Create and set up the window.
	        JFrame frame = new JFrame("Labels are FUN!");
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	        //Add content to the window.
	        frame.add(new Label());

	        //Display the window.
	        frame.pack();
	        frame.setVisible(true);
	    }

	    public static void main(String[] args) {
	        //Schedule a job for the event dispatch thread:
	        //creating and showing this application's GUI.
	        SwingUtilities.invokeLater(new Runnable() {
	            public void run() {
			//Turn off metal's use of bold fonts
		        UIManager.put("swing.boldMetal", Boolean.FALSE);
	                
			createAndShowGUI();
	            }
	        });
	    }
	}
