Showing posts with label Simple Application Program. Show all posts

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class ToolBarDemo extends JPanel 
{  
    public static void main(String[] args) 
    {
        JFrame window = new JFrame("ToolBarDemo");
        ToolBarDemo content = new ToolBarDemo();
        window.setContentPane(content);
        window.pack(); 
        window.setResizable(false);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        window.setLocation( (screenSize.width - window.getWidth())/2,
                (screenSize.height - window.getHeight())/2 );
        window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        window.setVisible(true);
    }
    private class Display extends JPanel implements MouseListener, MouseMotionListener 
    {
        private BufferedImage OSC;  // Off-screen canvas.
        private Color currentColor = Color.RED;  // Current drawing color.
        private int prevX, prevY;  // Previous mouse position, during mouse drags.
        private BasicStroke stroke;  // Stroke used for drawing.
        Display() { // constructor.
            addMouseListener(this);
            addMouseMotionListener(this);
            setPreferredSize(new Dimension(300,300));
            stroke = new BasicStroke(3,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND);
        }
        void setCurrentColor(Color c) {  // change current drawing color
            currentColor = c;
        }

        void clear() { // clear the drawing area by filling it with white
            if (OSC != null) {
                Graphics g = OSC.getGraphics();
                g.setColor(Color.WHITE);
                g.fillRect(0,0,getWidth(),getHeight());
                g.dispose();
                repaint();
            }
        }
        public void paintComponent(Graphics g) { // just copies OSC to screen
            checkImage();
            g.drawImage(OSC,0,0,null);
        }
        void checkImage() {  // create or resize OSC if necessary
            if (OSC == null) {
                // Create the OSC, with a size to match the size of the panel.
                OSC = new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_INT_RGB);
                clear();
            }
            else if (OSC.getWidth() != getWidth() || OSC.getHeight() != getHeight()) {
                BufferedImage newOSC;
                newOSC = new BufferedImage(getWidth(),getHeight(),BufferedImage.TYPE_INT_RGB);
                Graphics g = newOSC.getGraphics();
                g.drawImage(OSC,0,0,getWidth(),getHeight(),null);
                g.dispose();
                OSC = newOSC;
            }
        }
        public void mousePressed(MouseEvent e) {
            prevX = e.getX();
            prevY = e.getY();
        }
        public void mouseDragged(MouseEvent e) {
            Graphics2D g2 = (Graphics2D)OSC.getGraphics();
            g2.setColor(currentColor);
            g2.setStroke(stroke);
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.drawLine(prevX,prevY,e.getX(),e.getY());
            g2.dispose();
            repaint();
            prevX = e.getX();
            prevY = e.getY();
        }
        public void mouseReleased(MouseEvent e) { }
        public void mouseMoved(MouseEvent e) { }
        public void mouseClicked(MouseEvent e) { }
        public void mouseEntered(MouseEvent e) { }
        public void mouseExited(MouseEvent e) { }
    }


    private Display display; 
    public ToolBarDemo() {
        setLayout(new BorderLayout(2,2));
        setBackground(Color.GRAY);
        setBorder(BorderFactory.createLineBorder(Color.GRAY,2));
        display = new Display();
        add(display, BorderLayout.CENTER);
        JToolBar toolbar = new JToolBar();
        add(toolbar, BorderLayout.NORTH);
        ButtonGroup group = new ButtonGroup();
        toolbar.add( makeColorRadioButton(Color.RED,group,true) );
        toolbar.add( makeColorRadioButton(Color.GREEN,group,false) );
        toolbar.add( makeColorRadioButton(Color.BLUE,group,false) );
        toolbar.addSeparator(new Dimension(20,20));
        toolbar.add( makeClearButton() );
    }
   
    private JRadioButton makeColorRadioButton(final Color c, ButtonGroup grp, boolean selected) {       
        BufferedImage image = new BufferedImage(30,30,BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setColor(Color.LIGHT_GRAY);
        g.fillRect(0,0,30,30);
        g.setColor(c);
        g.fill3DRect(1, 1, 24, 24, true);
        g.dispose();
        Icon unselectedIcon = new ImageIcon(image);
        /* Create an ImageIcon for the selected state of the button. */
        image = new BufferedImage(30,30,BufferedImage.TYPE_INT_RGB);
        g = image.getGraphics();
        g.setColor(Color.DARK_GRAY);
        g.fillRect(0,0,30,30);
        g.setColor(c);
        g.fill3DRect(3, 3, 24, 24, false);
        g.dispose();
        Icon selectedIcon = new ImageIcon(image);
       /* Create and configure the button. */
        JRadioButton button = new JRadioButton(unselectedIcon);
        button.setSelectedIcon(selectedIcon);
        button.addActionListener( new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // The action for this button sets the current drawing color
                // in the display to c.
                display.setCurrentColor(c);
            }
        });
        grp.add(button);
        if (selected)
            button.setSelected(true);
        return button;
    } // end makeColorRadioButton   
    private JButton makeClearButton() {
        BufferedImage image = new BufferedImage(24,24,BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = (Graphics2D)image.getGraphics();
        g2.setColor(Color.LIGHT_GRAY);
        g2.fillRect(0,0,24,24);
        g2.setStroke( new BasicStroke(3));
        g2.setColor(Color.BLACK);
        g2.drawLine(4,4,20,20);
        g2.drawLine(4,20,20,4);
        g2.dispose();
        Icon clearIcon = new ImageIcon(image);
        Action clearAction = new AbstractAction(null,clearIcon) {
            public void actionPerformed(ActionEvent evt) {
                display.clear();
            }
        };
        clearAction.putValue(Action.SHORT_DESCRIPTION, "Clear the Display");
        JButton button = new JButton(clearAction);
        return button;
    }
}

Output:

package vijay;
/**
 *
 * @author VIJAY
 */
import java.awt.*;       
import java.awt.event.*;
import javax.swing.*;
public class SubKillerWithScore extends JPanel 
{
   
    public static void main(String[] args) 
    {
        JFrame window = new JFrame("Sub Killer Game");
        SubKillerWithScore content = new SubKillerWithScore();
        window.setContentPane(content);
        window.setSize(600, 480);
        window.setLocation(100,100);
        window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        window.setResizable(false);  // User can't change the window's size.
        window.setVisible(true);
    }
   
    //------------------------------------------------------------------------

    private Timer timer;        // Timer that drives the animation.

    private int width, height;
    private Boat boat;          // The boat, bomb, and sub objects are defined
    private Bomb bomb;          //    by nested classes Boat, Bomb, and Submarine,
    private Submarine sub;      //    which are defined later in this class.
    private int hits;           // The number of times the user has hit the sub.
    private int misses;         // The number of times the user has missed the sub.
    private Font infoFont = new Font("Monospaced", Font.PLAIN, 16);
                            // A font for displaying the numbers of hits and misses.
    public SubKillerWithScore() 
    {

        setBackground( new Color(0,200,0) );

        ActionListener action = new ActionListener() 
        {
                // Defines the action taken each time the timer fires.
            public void actionPerformed(ActionEvent evt) 
            {
                if (boat != null) 
                {
                    boat.updateForNewFrame();
                    bomb.updateForNewFrame();
                    sub.updateForNewFrame();
                }
                repaint();
            }
        };
        timer = new Timer( 30, action );  // Fires every 30 milliseconds.

        addMouseListener( new MouseAdapter() 
        {
                // The mouse listener simply requests focus when the user
                // clicks the panel.
            public void mousePressed(MouseEvent evt) 
            {
                requestFocus();
            }
        } );

        addFocusListener( new FocusListener() 
       {              
            public void focusGained(FocusEvent evt) 
            {
                timer.start();
                repaint();
            }
            public void focusLost(FocusEvent evt) 
            {
                timer.stop();
                repaint();
            }
        } );

        addKeyListener( new KeyAdapter() 
        {
            public void keyPressed(KeyEvent evt) 
            {
                int code = evt.getKeyCode(); 
                if (code == KeyEvent.VK_LEFT) 
               {
                    boat.centerX -= 15;
                }
                else if (code == KeyEvent.VK_RIGHT) 
                {                        
                    boat.centerX += 15;
                }
                else if (code == KeyEvent.VK_DOWN) 
                {                       
                    if ( bomb.isFalling == false )
                        bomb.isFalling = true;
                }
            }
        } );

    } // end constructor

    public void paintComponent(Graphics g) {

        super.paintComponent(g);  // Fill panel with background color, green.
       
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        if (boat == null) {              
            width = getWidth();
            height = getHeight();
            boat = new Boat();
            sub = new Submarine();
            bomb = new Bomb();
        }

        if (hasFocus())
            g.setColor(Color.CYAN);
        else {
            g.setColor(Color.BLACK);
            g.drawString("CLICK TO ACTIVATE", 20, height - 10);
            g.setColor(Color.GRAY);
        }
        g.drawRect(0,0,width-1,height-1);  // Draw a 3-pixel border.
        g.drawRect(1,1,width-3,height-3);
        g.drawRect(2,2,width-5,height-5);

        boat.draw(g);
        sub.draw(g);
        bomb.draw(g);

        g.setFont(infoFont);
        g.setColor(Color.BLACK);
        g.drawString("Number of hits:   " + hits, 15, 24);
        g.drawString("Number of misses: " + misses, 15, 45);   
       
    } // end paintComponent()
 
    private class Boat {
        int centerX, centerY;  // Current position of the center of the boat.
        Boat() { // Constructor centers the boat horizontally, 80 pixels from top.
            centerX = width/2;
            centerY = 80;
        }
        void updateForNewFrame() { // Makes sure boat has not moved off screen.
            if (centerX < 0)
                centerX = 0;
            else if (centerX > width)
                centerX = width;
        }
        void draw(Graphics g) {  // Draws the boat at its current location.
            g.setColor(Color.BLUE);
            g.fillRoundRect(centerX - 40, centerY - 20, 80, 40, 20, 20);
        }
    } // end nested class Boat

    private class Bomb {
        int centerX, centerY; // Current position of the center of the bomb.
        boolean isFalling;   
        Bomb() { // Constructor creates a bomb that is initially attached to boat.
            isFalling = false;
        }
        void updateForNewFrame() {  // If bomb is falling, take appropriate action.
            if (isFalling) {
                if (centerY > height) {
                    isFalling = false;
                    misses++;   // USER HAS MISSED THE SUB
                }
                else if (Math.abs(centerX - sub.centerX) <= 36 &&
                        Math.abs(centerY - sub.centerY) <= 21) {
                    sub.isExploding = true;
                    sub.explosionFrameNumber = 1;
                    isFalling = false;  // Bomb reappears on the boat.
                    hits++;   // USER HAS HIT THE SUB
                }
                else {
                    centerY += 10;
                }
            }
        }
        void draw(Graphics g) { // Draw the bomb.
            if ( ! isFalling ) { 
                centerX = boat.centerX;
                centerY = boat.centerY + 23;
            }
            g.setColor(Color.RED);
            g.fillOval(centerX - 8, centerY - 8, 16, 16);
        }
    } // end nested class Bomb

    private class Submarine {
        int centerX, centerY; // Current position of the center of the sub.
        boolean isMovingLeft; // Tells whether the sub is moving left or right
        boolean isExploding;  // Set to true when the sub is hit by the bomb.
        int explosionFrameNumber; 
        Submarine() {  // Create the sub at a random location 40 pixels from bottom.
            centerX = (int)(width*Math.random());
            centerY = height - 40;
            isExploding = false;
            isMovingLeft = (Math.random() < 0.5);
        }
        void updateForNewFrame() { // Move sub or increase explosionFrameNumber.
            if (isExploding) {
                explosionFrameNumber++;
                if (explosionFrameNumber == 15) {
                    centerX = (int)(width*Math.random());
                    centerY = height - 40;
                    isExploding = false;
                    isMovingLeft = (Math.random() < 0.5);
                }
            }
            else { // Move the sub.
                if (Math.random() < 0.04) { 
                    isMovingLeft = ! isMovingLeft;
                }
                if (isMovingLeft) {
                    centerX -= 5; 
                    if (centerX <= 0) { 
                        centerX = 0;
                        isMovingLeft = false;
                    }
                }
                else {
                    centerX += 5;        
                    if (centerX > width) { 
                        centerX = width;  
                        isMovingLeft = true;
                    }
                }
            }
        }
        void draw(Graphics g) {  // Draw sub and, if it is exploding, the explosion.
            g.setColor(Color.BLACK);
            g.fillOval(centerX - 30, centerY - 15, 60, 30);
            if (isExploding) {
                g.setColor(Color.YELLOW);
                g.fillOval(centerX - 4*explosionFrameNumber,
                        centerY - 2*explosionFrameNumber,
                        8*explosionFrameNumber,
                        4*explosionFrameNumber);
                g.setColor(Color.RED);
                g.fillOval(centerX - 2*explosionFrameNumber,
                        centerY - explosionFrameNumber/2,
                        4*explosionFrameNumber,
                        explosionFrameNumber);
            }
        }
    } // end nested class Submarine   
} // end class SubKiller

Output:

 

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PopupCalculatorApplet extends JApplet implements ActionListener 
{
  public void init() 
  {
    Button calcButton = new Button("Calculator");
    calcButton.addActionListener(this);
    Container contentPane = getContentPane();
    contentPane.add(calcButton);
  }

  public void actionPerformed(ActionEvent evt) 
  {
    if (calc.isVisible())
      calc.setVisible(false);
    else
      calc.show();
  }

  private JFrame calc = new CalculatorFrame();
}

class CalculatorPanel extends JPanel implements ActionListener 
{
  public CalculatorPanel() 
  {
    setLayout(new BorderLayout());

    display = new JTextField("0");
    display.setEditable(false);
    add(display, "North");

    JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 4));
    String buttons = "789/456*123-0.=+";
    for (int i = 0; i < buttons.length(); i++)
      addButton(p, buttons.substring(i, i + 1));
    add(p, "Center");
  }

  private void addButton(Container c, String s) 
  {
    JButton b = new JButton(s);
    c.add(b);
    b.addActionListener(this);
  }

  public void actionPerformed(ActionEvent evt) 
  {
    String s = evt.getActionCommand();
    if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) 
    {
      if (start)
        display.setText(s);
      else
        display.setText(display.getText() + s);
      start = false;
    } 
    else 
    {
      if (start) 
      {
        if (s.equals("-")) 
        {
          display.setText(s);
          start = false;
        } else
          op = s;
      } 
      else 
      {
        calculate(Double.parseDouble(display.getText()));
        op = s;
        start = true;
      }
    }
  }

  public void calculate(double n) 
  {
    if (op.equals("+"))
      arg += n;
    else if (op.equals("-"))
      arg -= n;
    else if (op.equals("*"))
      arg *= n;
    else if (op.equals("/"))
      arg /= n;
    else if (op.equals("="))
      arg = n;
    display.setText("" + arg);
  }

  private JTextField display;
  private double arg = 0;
  private String op = "=";
  private boolean start = true;
}

class CalculatorFrame extends JFrame 
{
  public CalculatorFrame() 
  {
    setTitle("Calculator");
    setSize(200, 200);
    Container contentPane = getContentPane();
    contentPane.add(new CalculatorPanel());
  }
}


Output:

Welcome to My Blog

Translate

Popular Post

Total Pageviews

- Copyright © Learning Java Program - Powered by Blogger -