Powered by Blogger.

Java: Drawing Lines, Rectangles, and Ovals Java Applet Program

Drawing Lines, Rectangles, and Ovals Java Applet:-

Code 4-15 presents a variety if Graphics methods for drawing lines, rectangles, and ovals.

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

 public class TestLineRectOval extends JFrame{
   private static final long serialVersionUID=0;

   public TestLineRectOval(){
     super(”Lines Ractangles Ovals”);
     setSize(360, 450);
     show();
   }

   public void paint(Graphics g){
     g.setColor(Color.red);
     g.drawLine(50, 40, 300, 40);

     g.setColor(Color.blue);
     g.drawRect(50 ,60, 100, 60);
     g.fillRect(200, 60, 100, 60);

     g.setColor(Color.cyan);
     g.drawRoundRect(50, 150, 100, 60, 50, 50);
     g.fillRoundRect(200, 150, 100, 60, 50, 50);

     g.setColor(Color.yellow);
     g.draw3DRect(50, 250, 100, 60, true);
     g.fill3DRect(200, 250, 100, 60, true);

     g.setColor(Color.magenta);
     g.drawOval(50, 350, 100, 60);
     g.fillOval(200, 350, 100, 60);
   }

   public static void main(String[]args){
     TestLineRectOval tlro = new TestLineRectOval();
     tlro.addWindowListener(
       new WindowAdapter(){
         public void windowClosing(WindowEvent e){
           System.exit(0);
         }
       }
     );
   }
 }

Code 4-16 provides an password example using Jlabel, JtextField, JpasswordField, and Jbutton.

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

 public class Password extends JFrame{
   private static final long serialVersionUID=0;

   private JLabel l1, l2;
   private JTextField t1;
   private JPas swordField pw;
   private JButton b1, b2;

   public Password(){
     super(”Password Example”);
     Container c = getContentPane();
     c.setLayout(new FlowLayout());

     l1 = new JLabel(”Enter User Name”);
     c.add(l1);

     t1 = new JTextField(15);
     c.add(t1);

     l2 = new JLabel(”Enter Password”);
     c.add(l2);

     pw = new JPas swordField(10);
     c.add(pw);

     b1 = new JButton(”Enter”);
     b1.addActionListener(
       new ActionListener(){
         public void actionPerformed(ActionEvent e){
           if(t1.getText().equals(”Parvez”) && pw.getText(). equals (”123456
              JOptionPane.showMessageDialog(null, ”Welcome to Java”);
           }else{
              JOptionPane.showMessageDialog(null, ”Incorrect user name 38
           }
         }
       }
     );
     c.add(b1);

     b2 = new JButton (”Cancel”);
     b2.addActionListener(
       new ActionListener(){
          public void actionPerformed(ActionEvent e){
             String s = ” ”;
             t1.setText(s);
             pw.setText(s);
          }
       }
     );
     c.add(b2);

     setSize(300, 125);
     show();
     }

     public static void main(String[]args){
       Password PW = new Password();
       PW.addWindowListener(
         new WindowAdapter(){
           public void windowClosing(WindowEvent e){
              System.exit(0);
           }
         }
       );
     }
  }


Example of Jcomponents such as: JcheckBox, JradioButton, JcomboBox, Jlist, and JTextArea provided in code 4-17.

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

 public class TestJComt extends JFrame{
   private static final long serialVersionUID=0;

   private JCheckBox bold, italic;
   private JRadioButton male, female;
   private ButtonGroup radioGroup;
   private JComboBox cBox;
   private String[]str 1 = {”spring”, ”summer”, ”fall”};
   private JList colorList;
   private String[]str 2 = {”Red”, ”Green”, ”Blue”, ”Black”, ”White”, ”15 ”Orange”, ”Pink”, ”Magenta”, ”Sky”, ”Cyan 16 private JTextArea ta1;

   public TestJComt(){
     super(”Test JComponents”);
     Container c = getContentPane();
     c.setLayout(new FlowLayout());

     bold = new JCheckBox(”Bold”);
     c.add(bold);
     italic = new JCheckBox(”Italic”);
     c.add(italic);

     male = new JRadioButton(”Male”);
     c.add(male);
     female = new JRadioButton(”Female”);
     c.add(female);
     radioGroup = new ButtonGroup();
     radioGroup.add(male);
     radioGroup.add(female);

     cBox = new JComboBox(str 1);
     c.add(cBox);

     colorList = new JList(str 2);
     colorList.setVisibleRowCount(5);
     c.add(new JScrollPane(colorList));

     String s = ”Java is a object oriented programming language”;
     ta1 = new JTextArea(s, 10, 15);
     c.add(new JSc rollPane(ta1));

     setSize(200, 350);
     show();
   }

   public static void main(String[]args){
     TestJComt jc = new TestJComt ();
     jc.addWindowListener(
       new WindowAdapter(){
         public void windowClosing(WindowEvent e){
           System.exit(0);
         }
       }
     );
   }
 }

Using Example:

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

 public class OpenFile extends JFrame{
   private static final long serialVersionUID=0;
   private JButton b1;
   private JFileChooser jfc;

   public OpenFile(){
     super(”File Opener”);
     b1 = new JButton(”Open File Chooser”);
     b1.addActionListener(
       new ActionListener(){
          public void actionPer formed( ActionEvent e){
            abc();
          }
       }
     );
     getContentPane().add(b1, BorderLayout.NORTH);
     setSize(300, 200);
     show();
     }

     private void abc(){
       jfc = new JFileChooser();
       jfc.showOpenDialog(this);
     }

     public static void main(String[]args){
       OpenFile of = new OpenFile();
       of.addWindowListener(
          new WindowAdapter(){
              public void windowClosing(WindowEvent e){
                System.exit(0);
              }
          }
       );
     }
  }

Java:~ code for change Font in javaScript Program

Description:

The java.awt.Font class is used to create Font objects to set the font for drawing text, labels, text fields, buttons, etc.

Example:

       JButton b = new JButton("OK");
       b.setFont(new Font("sansserif", Font.BOLD, 32));

Available System Fonts:

For maximum portability, use the generic font names, but you can use any font installed in the system. It is suggested to use a font family name, and create the font from that, but you can also use the fonts directly. You can get an array of all available font family names or all fonts.

 // Font info is obtained from the current graphics environment.

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

//--- Get an array of font names (smaller than the number of fonts)

String[] fontNames = ge.getAvailableFontFamilyNames();

//--- Get an array of fonts.  It's preferable to use the names above.

Font[] allFonts = ge.getAllFonts();

Using Fonts for Graphics:

      Font f;
      f = new Font(String name, int style, int size);    // creates a new font
name is "Serif", "SansSerif", or "Monospaced", or a font on the system. style is Font.PLAIN. Font.BOLD, Font.ITALIC, or Font.BOLD+Font.ITALIC. size is the point size, typically in the range 8-48.

Example:

Font big = new Font("SansSerif", Font.Bold, 48);
. . .
g.setFont(big);
g.drawString("Greetings Earthling");

Fonts in Java:

In Java, Font class manages the font of Strings. The constructor of Font class takes three arguments: the font name, font style, and font size. The font name is any font currently supported by the system where the program is running such as standard Java fonts Monospaced, SansSerif, and Serif. The font style is Font.PLAIN, Font.ITALIC, or Font.BOLD. Font styles can be used in combination such as: Font.ITALIC + Font.BOLD.

Fonts in Java Example:

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

 public class TestFonts extends JFrame{
   private static final long serialVersionUID=0;

   public TestFonts(){
     super(”Font Examples”);
     setSize(300, 150);
     show();
   }

   public void paint(Graphics g){
     g.drawString(”Welcome to Java.”, 20, 50);
     g.setColor(Color.red);
     g.setFont(new Font(”Monospaced”, Font.BOLD, 14));
     g.drawString(”Welcome to Java.”, 20, 70);
     g.setColor(Color.blue);
     g.setFont(new Font(”SansSerif”, Font.BOLD +Font. ITALIC, 16));
     g.drawString(”Welcome to Java.”, 20, 90);
   }

   public static void main(String[]args){
     TestFonts tf = new TestFonts();
     tf.addWindowListener(
        new WindowAdapter(){
          public void windowClosing(WindowEvent e){
            System.exit(0);
          }
        }
      ) ;
    }
 }

Code for Change Font of Text in Java:

import java.awt.*;
import java.text.*;
import javax.swing.*;
import java.awt.font.*;

public class ShowColorAndFont extends JPanel {
  public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    String text = "Java is an Object Oriented Programming Language.";
    Dimension dimension = getSize();

    Font font1 = new Font("Book Antiqua", Font.PLAIN, 30);
    Font font2 = new Font("Monotype Corsiva", Font.PLAIN, 30);

    AttributedString attributedString = new AttributedString(text);
    attributedString.addAttribute(TextAttribute.FONT, font1);
    attributedString.addAttribute(TextAttribute.FONT, font2, 1, 4);
   attributedString.addAttribute(TextAttribute.FONT, font2, 6, 7);
   attributedString.addAttribute(TextAttribute.FONT, font2, 9, 10);
   attributedString.addAttribute(TextAttribute.FONT, font2, 12, 17);
   attributedString.addAttribute(TextAttribute.FONT, font2, 19, 26);
   attributedString.addAttribute(TextAttribute.FONT, font2, 28, 38);
   attributedString.addAttribute(TextAttribute.FONT, font2, 40, 47);

  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 0, 1);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 5, 6);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 8, 9);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 11, 12);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 18, 19);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 27, 28);
  attributedString.addAttribute(TextAttribute.FOREGROUND, Color.red, 39, 40);
  
    g2d.drawString(attributedString.getIterator(), 40, 80);
  }
  public static void main(String[] args) {
    JFrame frame = new JFrame("Show Color and Font");
    frame.getContentPane().add(new ShowColorAndFont());
    frame.setSize(700, 200);
    frame.show();

  }

Java Program: Using Layout Managers Example

Layout Managers:

In Java programming, the layout manager manages the layout of components in a container, which we can change by calling setLayout() method. The layout manage is responsible for deciding the layout policy and size of each of its container’s child components. The following layout managers are included with the Java programming language:

1. FlowLayout The FlowLayout is the default layout manager of Panel and Applet.
2. BorderLayout The BorderLayout is the default layout manager of Window, Dialog, and Frame.
3. Layout The GridLayout provides flexibility for placing components.
4. CardLayout The CardLayout provides functionality comparable to a primitive tabbed panel.
5. GridBagLayout.

FlowLayout manager uses line-by-line technique to place the components in a container. Each time a line is filled, a new line is started. It does not consider the size of components.

 import java.awt.*;
 import java.awt.event.*;

 public class FlowExample implements WindowListener{
   private Frame f;
   private Button b1, b2, b3;

   public FlowExample(){
     f = new Frame(”FlowLayout”);
     b1 = new Button(”Button 1”);
     b2 = new Button(”Button 2”);
     b3 = new Button(”Button 3”);
   }

   public void launchFrame(){
     f.setLayout(new FlowLayout());
     // f.setLayout(new FlowLayout(FlowLayout.LEFT));
     // f.setLayout(new FlowLayout(FlowLayout.RIGHT));
     // f.setLayout(new FlowLayout(FlowLayout.CENTER));
     // f.setLayout(new FlowLayout(FlowLayout.RIGHT,20,30));
     f.add(b1);
     f.add(b2);
     f.add(b3);
     f.addWindowListener(this);
     f.setSize(250, 150);
     f.setBackground(Color.red);
     f.setVisible(true);
   }

   public void windowClosing(WindowEvent e){
     System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified (WindowEvent e){}
   public void windowDeiconified(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
     FlowExamplefe = new FlowExample();
     fe.launchFrame();
   }
 }

The BorderLayout manager contains five distinct areas: NORTH, SOUTH, EAST, WEST, and CENTER, indicated by BorderLayout.NORTH, and so on:

 import java.awt.*;
 import java.awt.event.*;

 public c lass BorderExample implements WindowListener{
   private Frame f;
   private Button b1, b2, b3, b4, b5;

   public BorderExample(){
     f = new Frame(”FlowLayout”);
     b1 = new Button(”Button 1”);
     b2 = new Button(”Button 2”);
     b3 = new Button(”Button 3”);
     b4 = new Button(”Button 4”);
     b5 = new Button(”Button 5”);
   }

   public void launchFrame(){
     f.add(b1, BorderLayout.NORTH);
     f.add(b2, BorderLayout.SOUTH);
     f.add(b3, BorderLayout.WEST);
     f.add(b4, BorderLayout.EAST);
     f.add( b5,BorderLayout.CENTER);
     f.addWindowListener(this);
     f.setSize(250, 250);
     f.setBackground(Color.red);
     f.setVisible(true);
   }

   public void windowClosing(WindowEvent e){
     System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconified(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
     BorderExample be = new BorderExample();
     be.launchFrame();
   }
 }

The GridLayout manager placing components with a number of rows and columns. The following constructor creates a GridLayout with the specified equal size. new GridLayout(int rows, int cols);

 import java.awt.*;
 import java.awt.event.*;

 public class GridExample implements WindowListener{
   private Frame f;
   private Button b1, b2, b3, b4, b5, b6;

   public GridExample(){
     f = new Frame(”FlowLayout”);
     b1 = new Button(”Button 1”);
     b2 = new Button(”Button 2”);
     b3 = new Button(”Button 3”);
     b4 = new Button(”Button 4”);
     b5 = new Button(”Button 5”);
     b6 = new Button(”Button 6”);
   }

   public void launchFrame(){
     f.setLayout(new GridLayout(3,2));
     f.add(b1);
     f.add(b2);
     f.add(b3);
     f.add(b4);
     f.add(b5);
     f.add(b6);
     f.addWindowListener(this);
     f.setSize(300, 300);
     f.setBackground(Color.red);
     f.setVisible(true);
   }

   public void windowClosing(WindowEvent e){
     System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconified (WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
     GridExample ge = new GridExample() ;
     ge.launchFrame();
   }
 }

About Java: Colors in Java Selector

Description:

The java.awt.Color class is used to create new colors, and predefines a few color constants (see below). Java allows the creation of up to 24 million different colors.

Because our eyes have three kinds of neurons that respond primarily to red, green, and blue, it's possible for computer monitors (and TVs) to create all colors using the RGB system. The RGB system Java uses combines red, green, and blue in amounts represented by a number from 0 to 255. For example, red is (255, 0, 0) -- 255 units of red, no green, and no blue. White is (255, 255, 255) and black is (0,0,0).

Color Constants:

Java originally defined a few color constant names in lowercase, which violated the naming rule of using uppercase for constants. These are best to use since they are available in all versions of Java: Color.black, Color.darkGray, Color.gray, Color.lightGray, Color.white, Color.magenta, Color.red, Color.pink, Color.orange, Color.yellow, Color.green, Color.cyan, Color.blue

Java 1.4 added the proper uppercase names for constants: Color.BLACK, Color.DARK_GRAY, Color.GRAY, Color.LIGHT_GRAY, Color.WHITE, Color.MAGENTA, Color.RED, Color.PINK, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.CYAN, Color.BLUE

Constructor:

Color c = new Color(int red, int green, int blue)

This creates a new color object that is a combination of red, green, and blue. The values of each color must be in the range 0-255.

Don't do anything to a Color:

A Color object is created only to be passed as a parameter. You will never call any Color methods.

Example:

Color c = new Color(255, 255, 240);
this.setBackground(c);

Advanced:

Additional constructors use single packed ints or floating point values. In addition, there is support for the HSB (Hue, Saturation, Brightness) color model and transparency. There is a Color Chooser in Java 2 that lets the user choose a color.   

Colors in Java:

In Java, we can control the colors used for the foreground using setForeground() method and the background using setBackground() method of AWT components. The setForeground() and setBackground() methods take an arguments that is an instance of of java.awt.Color class. We can use the constant colors referred to as Color.red, Color.blue, Color.green, Color.yellow, and so on. We can also construct a specific Color object by specifying the color by a combination of three byte-sized integers (0-255), one for each primary color: red, green, and blue.

Colors in Java Program:

 import java.awt.*;
 import java.awt.event.*;

 public class TestColors implements WindowListener, ActionListener{
private Frame f;
private Button b;

public TestColors(){
f = new Frame(”Frame Title”);
b = new Button(”Change Color”);
b.setActionCommand(”button press”);
}

public void launchFrame(){
b.addActionListener(this);
b.setForeground(Color.red);
b.setBackground(Color.yellow);
f.add(b);
f.addWindowListener(this);
f.setSize(300, 300);
f.setBackground(Color.green);
f.setLayout(new FlowLayout());
f.setVisible(true);
}

public void actionPer formed(ActionEvent e){
int x, y, z;
if(e.getActionCommand()==”button press”){
x = (int) (Math.random()*100);
y = (int) (Math.random()*100);
z = (int) (Math.random()*100);
Color c = new Color(x, y, z);
f.setBackground(c);
}
}

public void windowClosing(WindowEvent e){
System.exit(0);
}

public void windowOpened(WindowEvent e){}
public void windowIconified (WindowEvent e){}
public void windowDeiconified (WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}

public static void main(String[]args){
TestColors tc = new TestColors();
tc.launchFrame();
}
}

Colliding Using Mouse Example

This section covers tasks associated with mouse input:

1. Tracking the Mouse Cursor

2. Drawing Lines with the Mouse

3. Processing a Double Click Message

4. Selecting a Line of Text

5. Using a Mouse Wheel in a Document with Embedded Objects

6. Retrieving the Number of Mouse Wheel Scroll Lines

Mouse Class Definition:

The mouse class inherits from QGraphicsItem. The QGraphicsItem class is the base class for all graphical items in the Graphics View framework, and provides a light-weight foundation for writing your own custom items.

class Mouse : public QGraphicsItem
 {
 public:
     Mouse();

     QRectF boundingRect() const;
     QPainterPath shape() const;
     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                QWidget *widget);

 protected:
     void advance(int step);

 private:
     qreal angle;
     qreal speed;
     qreal mouseEyeDirection;
     QColor color;
 };

When writing a custom graphics item, you must implement QGraphicsItem's two pure virtual public functions: boundingRect(), which returns an estimate of the area painted by the item, and paint(), which implements the actual painting. In addition, we reimplement the shape() and advance(). We reimplement shape() to return an accurate shape of our mouse item; the default implementation simply returns the item's bounding rectangle. We reimplement advance() to handle the animation so it all happens on one update.

Mouse Example:

import java.awt.*;
 import java.awt.event.*;

 public class MouseExample implements WindowListener, MouseMotionListene
   private Frame f;
   private TextField tf;

   public MouseExample(){
     f = new Frame(”Mouse Example”);
     tf = new TextField(30);
   }

   public void launchFrame(){
     Label label = new Label(”Click and drag the mouse”);
     f.add(label, BorderLayout.NORTH);
     f.add(tf, BorderLayout.SOUTH);
     f.addMouseMotionListener(this);
     f.addMouseListener(this);
     f.addWindowListener(this);
     f.setSize(300, 200);
     f.setVisible(true);
   }

   public void mouseDragged (MouseEvent e){
     String s = ”Mouse dragged : X= ”+e . getX()+” Y=”+e.getY();
     tf.setText(s);
   }

   public void mouseEntered(MouseEvent e){
     String s = ”The mouse entered”;
     tf.setText(s);
   }

   public void mouseExited (MouseEvent e){
     String s = ”The mouse has left the building”;
     tf.setText(s);
   }

   public void mousePressed(MouseEvent e){}
   public void mouseReleased(MouseEvent e){}
   public void mouseMoved(MouseEvent e){}
   public void mouseClicked(MouseEvent e){}

   public void windowClosing(WindowEvent e){
     System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconified(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
     MouseExample me = new MouseExample();
     me.launchFrame();
   }
 }

Java Program: J2SE Event Model in Java

J2SE Event Model:

An event is issued, when the user performs and action at the user interface level like: clicks a mouse or presses a key.

J2SE Event Model Program:

 import java.awt.*;
 import java.awt.event.*;

 public class EventHandle implements WindowListener, ActionListener{
   private Frame f;
   private Button b1, b2, b3;
   private TextField tf;

   public EventHandle(){
     f = new Frame(”Button Handling”);
     b1 = new Button(”YES”);
     b1.setActionCommand(”yes button”);
     b2 = new Button(”NO”);
     b2.setActionCommand (”no button”);
     b3 = new Button (”Clear”);
     b3.setActionCommand (”clear button”);
     tf = new TextField(30);
   }

   public void launchFrame(){
     b1.addActionListener(this);
     b1.setForeground(Color.white);
     b1.setBackground(Color.blue);

     b2.addActionListener(this);
     b2.setForeground(Color.red);
     b2.setBackground(Color.green);

     b3.addActionListener(this);
     b3.setForeground(Color.blue);
     b3.setBackground(Color.yellow);

     tf.setForeground(Color.blue);
     tf.setBackground(Color.white);

     f.setLayout(new FlowLayout());
     f.add(b1);
     f.add(b2);
     f.add(b3);
     f.add(tf);
     f.addWindowListener(this);
     f.setSize(250, 150);
     f.setBackground(Color.red);
     f.setVisible(true);
   }

   public void actionPer formed(ActionEvent e){
     String str;
     if(e.getActionCommand()==” yes button”){
       str = ”You press YES button ”;
       tf.setText(str);
     }
     if(e.getActionCommand()==”no button”){
       str = ”You press NO button”;
       tf.setText(str);
     }
     if(e.getActionCommand()==” clear button”){
       str = ” ”;
       tf.setText(str);
     }
   }

   public void windowClosing(WindowEvent e){
    System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconified(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
     EventHandle eh = new EventHandle();
     eh.launchFrame();
   }
 }

Java-Using Abstract Windowing Toolkit (AWT) In Java Applications

Abstract Window Toolkit:

AWT is the basic GUI (Graphics User Interface) used for Java applications and applets. Every GUI component that appears on the screen is a subclass of the abstract class Component or Menu Component. The class Container is an abstract subclass of Component class, which permits other components to be nested inside it. There are two types of containers: Window and Panel. A Window is a free-standing native window on the display that is independent of other containers. There are two important types of Window containers: Frame and Dialog. A Frame is a window with a title and corners that you can resize. A Dialog is a simple window and cannot have a menu bar, you cannot resize it, but you can move it. A Panel must be contained within another Container, or inside a web browser’s window.

Abstract Window Toolkit Example_1:

 import java.awt.*;
 import java.awt.event.*;

 public class FrameWithPanel implements WindowListener{
    private Frame f;
    private Panel p;

    public FrameWithPanel(){
       f = new Frame(”Frame Title”);
       p = new Panel();
    }

    public void launchFrame(){
       f.addWindowListener(this);
       f.setSize(400, 400);
       f.setBackground(Color.red);
       f.setLayout(null);

       p.setSize(150, 150);
       p.setBackground(Color.green);
       f.add(p);
       f.setVisible(true);
   }

   public void windowClosing(WindowEvent e){
      System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconified(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
      FrameWithPanel fp = new FrameWithPanel();
      fp.launchFrame();
   }
 }

Example 2:

 import java.awt.*;
 import java.awt.event.*;

 public class TestMenuBar implements WindowListener, ActionListener{
    private Frame f;
    private MenuBar mb;
    private Menu m1, m2, m3;
    private MenuItem mi1, mi2, mi3, mi4;

    public TestMenuBar(){
       f = new Frame(”MenuBar Example”);
       mb = new MenuBar();
       m1 = new Menu(”File”);
       m2 = new Menu(”Edit”);
       m3 = new Menu(”Help”);
       mi1 = new MenuItem(”New”);
       mi2 = new MenuItem(”Save”);
       mi3 = new MenuItem(”Load”);
       mi4 = new MenuItem(”Quit”);
   }

   public void launchFrame(){
      mi4.addActionListener(this);
      m1.add(mi1);
      m1.add(mi2);
      m1.add(mi3);
      m1.addSeparator();
      m1.add(mi4);

      mb.add(m1);
      mb.add(m2);
      mb.setHelpMenu(m3);
      f.setMenuBar(mb);

      f.addWindowListener(this);
      f.setSize(400, 400);
      f.setBackground(Color.red);
      f.setLayout(null);
      f.setVisible(true);
   }

   public void actionPerformed(ActionEvent e){
      System.exit(0);
   }

   public void windowClosing(WindowEvent e){
      System.exit(0);
   }

   public void windowOpened(WindowEvent e){}
   public void windowIconified(WindowEvent e){}
   public void windowDeiconi fied(WindowEvent e){}
   public void windowClosed(WindowEvent e){}
   public void windowActivated(WindowEvent e){}
   public void windowDeactivated(WindowEvent e){}

   public static void main(String[]args){
      TestMenuBar tmb = new TestMenuBar();
      tmb.launchFrame();
   }
 }


References:

1. Fowler, Amy (1994). "Mixing heavy and light components". Sun Microsystems. Retrieved 17 December 2008.

2. Geertjan, Wielenga (16 December 2008). "A Farewell to Heavyweight/Lightweight Conflicts". Retrieved 17 December 2008.

3. "Bug/RFE fixed in current JDK 6u12 build". Sun Micro systems. 12 December 2008. Retrieved 17 December 2008.

4. Torre, Mario (2 March 2008). "FINAL PROPOSAL: Portable GUI backends". Retrieved 7 September 2008.

5. Kennke, Roman (18 December 2008). "Caciocavallo Architecture Overview". Retrieved 7 September 2008.

6. Kennke, Roman (3 September 2008). "Cacio Swing AWT peers". Retrieved 7 September 2008.

7. "How much has been pushed upstream?". openjdk.java.net. 20 September 2009. Retrieved 7 March 2010. "You don't need anymore those patches, with the latest FontManager push, everything is upstream now, so just use the Cacio repo, it's completely self contained."

8. a b Kennke, Roman (28 July 2011). "JDK7 and Cacio coolness". Retrieved 8 August 2011.

9. Eisserer, Clemens. "HTML5/Canvas backend for Caciocavallo (GNU-Classpath)". Archived from the original on 10 August 2011. Retrieved 8 August 2011.