Converting an Applet into an Application

I think I understand the basics of converting an Applet into an Application but Iam unsure on how you would go about passing the parameters that are normally stored in the HTML tag into the application.

Basically you'll need to provide your own getParameter
method. It's easy with a java.util.HashTable -- the
parameter name as the key.that means that i would have to go back and change the old code, correct?

Similar Messages

  • Help with converting an applet into an application

    Here is a set of code which can work perfectly fine as an applet. But I have problem converting it into an application. Any help? I get some null pointer exception. Thanks alot.
    //File Name: Radar.java
    //Author: Saad Ayub
    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class Flash extends Thread{
    private DrawA dA;
    private int x;
    private int xCor[];
    private int yCor[];
    private int i;
    private int dir;
    private Image im;
    private Graphics buff;
    public Flash(DrawA dA, Image im, Graphics buff){
    this.dA = dA;
    this.im = im;
    this.buff = buff;
    xCor = new int[451];
    yCor = new int[451];
    dir = 10;
    }//end of Flash constructor
    public void run(){
    for(x = 75, i = 0; x <= 525; x++, i++){
    xCor[i] = x - 300;
    for(i = 0; i <= 450; i++){
    yCor[i] = (int)Math.sqrt(62500 - (xCor[i] * xCor));
    yCor[i] = 300 - yCor[i];
    for(x = 0; x <= 450; x++){
    xCor[x]+=300;
    i = 0;
    while(true){
    try{
    Thread.sleep(35);
    catch(Exception e){}
    dA.repaint();
    i += dir;
    if(i < 0 || i > 450){
    dir = -dir;
    i += dir;
    }//end of if
    }//end of while
    }//end of run
    public void draw(Graphics g){
    int green = 255;
    buff.setColor(Color.black);
    buff.fillRect(0, 0, 600, 330);
    buff.setColor(new Color(0, 70, 0));
    buff.fillArc(50, 50, 500, 500, 25, 130);
    buff.setColor(Color.green);
    if(i > 450)
    return;
    if(xCor[i] != 0 && yCor[i] != 0)
    buff.drawLine(xCor[i], yCor[i], 300, 300);
    if(dir > 0){
    for(int j = i; j > (i - 100); j--){
    if(j >= 0 && j <= 450){
    green -= 2;
    buff.setColor(new Color(0, green, 0));
    buff.drawLine(xCor[j], yCor[j], 300, 300);
    }//end of if
    }//end of for
    }//end of if
    else{
    for(int j = i; j < (i + 100); j++){
    if(j >= 0 && j <= 450){
    green -= 2;
    buff.setColor(new Color(0, green, 0));
    buff.drawLine(xCor[j], yCor[j], 300, 300);
    }// end of if
    }//end of for
    }//end of else
    buff.setColor(Color.green);
    buff.drawArc(112, 112, 375, 375, 25, 130);
    buff.drawArc(174, 174, 250, 250, 25, 130);
    buff.drawArc(238, 238, 125, 125, 25, 130);
    buff.drawLine(300, 300, 300, 50);
    g.drawImage(im, 0, 0, null);
    }//end of draw
    }//end of flash class
    class DrawA extends Panel{
    private Flash fl;
    private Image im;
    private Graphics buff;
    public DrawA(Image im){
    this.im = im;
    buff = im.getGraphics();
    fl = new Flash(this, im, buff);
    fl.start();
    // setBackground(Color.black);
    public void paint(Graphics g){
    fl.draw(g);
    public void update(Graphics g){
    paint(g);
    public class Radar extends Applet{
    public DrawA dA;
    private JLabel display;
    public Radar()
    display = new JLabel("display");
    public void init(){
    dA = new DrawA(createImage(600, 330));
    setLayout(new BorderLayout());
    add(dA, BorderLayout.CENTER);
    add(display, BorderLayout.EAST);
    public void stop(){
    destroy();
    Edited by: bozovilla on Oct 20, 2008 8:32 AM

    Start out by letting this thread die out...
    and repost saying that you forgot to use code tags and describe sufficiently what your problem is--things like the actual error message and where it happens.

  • Converting an applet into a frame

    hello.
    this is james mcfadden. I am developing a 2-player BlackJack card game in java. how do i convert the following 2 pieces of code from an applet into a frame?
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    public class Blackjack extends Applet implements ActionListener,Runnable{
         private Deck deck;     //The deck...
         private Hand player_hand;//player hand
         private Hand dealer_hand;//dealer hand.
         private Button bHit=new Button("Hit");
         private Button bStay=new Button("Stay");
         private Button bRestart=new Button("New Game");
         //lets do some double buffering.
         Image offIm=null;
         Graphics offGraphics=null;
         Dimension offDimension=null;
         Image[] card_images = new Image[52];
         private boolean cards_loaded = false;
         private int current_card_loading = 0;
         String message;                         //print a message...
         int width;          //The width of the applet
         int height;          //The height of the applet
         int card_width = -1;
         int card_padding = -1;     //How much should we pad the cards by..?
         private int games=-1;     //How many games have been played?
         public void init() {
              Thread card_loader = new Thread(this);
              card_loader.start();
         public void newGame(){
              bHit.setEnabled(true);
              bStay.setEnabled(false);
              player_hand = new Hand();     //Create new hands...
              dealer_hand = new Hand();
              //shuffle the deck.
              deck.shuffleCards();
              games++;
         public void hit(){
              bStay.setEnabled(true);
              player_hand.addCard(deck.dealCard());
              if(player_hand.getValue() > 21){
                   message = "You loose! (score:"+player_hand.getValue()+")";
                   //disable the hit and stay buttons...
                   bHit.setEnabled(false);
                   bStay.setEnabled(false);
                   return;
              message = "Score: "+player_hand.getValue();     
         public void stay(){
              while(dealer_hand.getValue() < 17){
                   dealer_hand.addCard(deck.dealCard());
              if(dealer_hand.getValue() <= 21 && player_hand.getValue() < dealer_hand.getValue())
                   message = "You loose! (" + player_hand.getValue()+
                             " - "+dealer_hand.getValue()+")";
              }else if (player_hand.getValue() == dealer_hand.getValue())
                   message = "You draw! (" + player_hand.getValue()+")";
              }else {
                   message = "You win! (" + player_hand.getValue()+
                             " - "+dealer_hand.getValue()+")";
              bHit.setEnabled(false);
              bStay.setEnabled(false);
         public void actionPerformed(ActionEvent e) {
              if(e.getSource() == bRestart)
                   newGame();
              }else if (e.getSource() == bHit)
                   hit();
              }else if (e.getSource() == bStay)
                   stay();
              repaint();
         public void paint(Graphics g) {
              update(g);
         public void update(Graphics g) {
              //lets sord out double buffering
              if(offGraphics==null){
                   offIm=createImage(getSize().width,getSize().height);
                   offGraphics=offIm.getGraphics();
              if(!cards_loaded){
                   //display a message saying we're loading the cards...
                   offGraphics.setFont(new Font("Arial",Font.PLAIN,14));
                   offGraphics.setColor(new Color(171,205,239));
                   offGraphics.fillRect(0,0,getSize().width,getSize().height);
                   offGraphics.setColor(Color.black);
                   offGraphics.drawString("Loading cards... ",5,20);
                   offGraphics.drawRect(15,40, 102 ,10);
                   offGraphics.drawRect(13,38, 106 ,14);
                   offGraphics.setColor(new Color(171,205,239));
                   offGraphics.fillRect(0,0,150,35);
                   offGraphics.setColor(Color.black);
                   offGraphics.fillRect(15,40, (current_card_loading)*2 ,10);
                   offGraphics.drawString("Loading card: "+current_card_loading+1,15,20);
              }else{
                   Image currentCard;
                   while(card_width == -1)
                        card_width = deck.getCard(0).getImage().getWidth(this);
                   if(card_padding == -1)
                        card_padding = (width - (card_width * 2) - 4) / 4;
                   //clear the background...
                   offGraphics.setColor(Color.blue);
                   offGraphics.fillRect(0,0,width,height);
                   offGraphics.setColor(Color.black);
                   offGraphics.fillRect(1,1,width-2,height-2);
                   offGraphics.setColor(Color.white);
                   offGraphics.drawString("PLAYER:",card_padding,40);
                   offGraphics.drawString("DEALER:",(width/2) + card_padding,40);
                   offGraphics.drawString(message,5,height - 20);
                   if(games > 0)
                        offGraphics.drawString(games + " game(s) played...",5,height - 10);
                   //Draw the players hand...
                   for(int i=0;i<player_hand.getCardCount();i++){
                        currentCard = player_hand.getCards().getImage();
                        offGraphics.drawImage(currentCard, card_padding, 70+(20*(i-1)), this);
                   //now draw the dealers hand...
                   for(int i=0;i<dealer_hand.getCardCount();i++){
                        currentCard = dealer_hand.getCards()[i].getImage();
                        offGraphics.drawImage(currentCard, (width/2 ) + card_padding, 70+(20*(i-1)), this);
              //draw buffered image.
              g.drawImage(offIm,0,0,this);
    public void run(){
              MediaTracker t=new MediaTracker(this);
              System.out.println("Applet getting cards...");
              for(current_card_loading=0; current_card_loading < 52; current_card_loading++){
              //try{
                   card_images[current_card_loading] = getImage(getCodeBase(),
                                                                "cards/" + (current_card_loading+1) + ".gif");
                   if(card_images[current_card_loading] == null){
                        System.out.println("Null card... ["+current_card_loading+"]");
                   }else{
                        t.addImage(card_images[current_card_loading],0);
                   try{
                        t.waitForID(0);
                   }catch(InterruptedException e){
                        System.err.println("Interrupted waiting for images..>");
                   //lets show our new status.
                   repaint();
              //create the deck object now
              deck = new Deck(this,card_images);     //Create a new deck object.
              card_width = deck.getCard(0).getImage().getWidth(this);
              bHit.addActionListener(this);
              bStay.addActionListener(this);
              bRestart.addActionListener(this);
              bHit.setEnabled(false);
              bStay.setEnabled(false);
              width = getSize().width;
              height = getSize().height;
              this.add(bHit);
              this.add(bStay);
              this.add(bRestart);
              player_hand = new Hand();     //Create the hands...
              dealer_hand = new Hand();
              //make sure that the buttons appear properly.
              this.validate();
              message = "";
              cards_loaded = true;
              System.out.println("End of thread...");
              repaint();
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.io.*;
    class Deck {
         Card[] cards = new Card[52];
         int currCard;
         public Deck(Blackjack myApplet,Image[] card_images) {
              // These are the (initial) values of all the cards
              int[] values = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10};
              // Make all the cards, getting the images individually
              for (int i=0; i<52; i++) {
    //               Image image = myApplet.getImage(myApplet.getCodeBase(), "cards/" + (i+1) + ".gif");
                   cards[i] = new Card(card_images, values[i]);
              // Shuffle the cards.
              shuffleCards();
         public void shuffleCards(){
              Card temp;
              //loop through each card in the deck and swap it with some random card.
              for (int i=0; i<52; i++) {
                   int rand = (int)(Math.random()*52);
                   temp = cards[51-i];//take the current card...
                   cards[51-i] = cards[rand];//and swap it with some random card...
                   cards[rand] = temp;
              //now, reset the currentCard to deal...
              currCard = 0;
         public Card dealCard() {
              Card card = cards[currCard];
              currCard++;
              return card;
         public Card getCard(int i) {
              return cards[i];

    thanks for the advice.
    i've done what you suggested. but when i went try to compile the 2 programs i get error messages (shown below along with the modified code). do you know what are causing these error messages?
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    public class Blackjack extends JFrame implements ActionListener,MouseListener{
         private Deck deck;     //The deck...
         private Hand player_hand;//player hand
         private Hand dealer_hand;//dealer hand.
         //private Button bHit=new Button("Hit");
         JButton bHit=new JButton("Hit");
         //private Button bStay=new Button("Stay");
         JButton bStay=new JButton("Stay");
         //private Button bRestart=new Button("New Game");
         JButton bRestart=new JButton("New Game");
         //lets do some double buffering.
         Image offIm=null;
         Graphics offGraphics=null;
         Dimension offDimension=null;
         Image[] card_images = new Image[52];
         private boolean cards_loaded = false;
         private int current_card_loading = 0;
         String message;                         //print a message...
         int width;          //The width of the applet
         int height;          //The height of the applet
         int card_width = -1;
         int card_padding = -1;     //How much should we pad the cards by..?
         private int games=-1;     //How many games have been played?
         public static void main(String[] args){
               Blackjack bj =new Blackjack(); 
              bj.pack();
              bj.setVisible(true);
         public Blackjack(){
            Thread card_loader = new Thread(this);
              card_loader.start();
              bHit.addMouseListener(this);
          bHit.addActionListener(this);
          //bHit.addMouseMotionListener(this);
              add(bHit);
              bStay.addMouseListener(this);
          bStay.addActionListener(this);
          //bStay.addMouseMotionListener(this);
              add(bStay);
              bRestart.addMouseListener(this);
          bRestart.addActionListener(this);
          //bRestart.addMouseMotionListener(this);
              add(bRestart);
              JFrame frame=new JFrame("BlackJack");
              frame.setSize(400,200);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.add(this);
            frame.pack();
            frame.setVisible(true);
         public void newGame(){
              bHit.setEnabled(true);
              bStay.setEnabled(false);
              player_hand = new Hand();     //Create new hands...
              dealer_hand = new Hand();
              //shuffle the deck.
              deck.shuffleCards();
              games++;
         public void hit(){
              bStay.setEnabled(true);
              player_hand.addCard(deck.dealCard());
              if(player_hand.getValue() > 21){
                   message = "You loose! (score:"+player_hand.getValue()+")";
                   //disable the hit and stay buttons...
                   bHit.setEnabled(false);
                   bStay.setEnabled(false);
                   return;
              message = "Score: "+player_hand.getValue();     
         public void stay(){
              while(dealer_hand.getValue() < 17){
                   dealer_hand.addCard(deck.dealCard());
              if(dealer_hand.getValue() <= 21 && player_hand.getValue() < dealer_hand.getValue()){
                   message = "You loose! (" + player_hand.getValue()+" - "+dealer_hand.getValue()+")";
              else if (player_hand.getValue() == dealer_hand.getValue()){
                   message = "You draw! (" + player_hand.getValue()+")";
              else{
                   message = "You win! (" + player_hand.getValue()+" - "+dealer_hand.getValue()+")";
              bHit.setEnabled(false);
              bStay.setEnabled(false);
         public void actionPerformed(ActionEvent e){
              if(e.getSource() == bRestart){
                   newGame();
              else if (e.getSource() == bHit){
                   hit();
              else if (e.getSource() == bStay){
                   stay();
              repaint();
         public void paint(Graphics g){
              update(g);
         public void update(Graphics g){
              //lets sord out double buffering
              if(offGraphics==null){
                   offIm=createImage(getSize().width,getSize().height);
                   offGraphics=offIm.getGraphics();
              if(!cards_loaded){
                   //display a message saying we're loading the cards...
                   offGraphics.setFont(new Font("Arial",Font.PLAIN,14));
                   offGraphics.setColor(new Color(171,205,239));
                   offGraphics.fillRect(0,0,getSize().width,getSize().height);
                   offGraphics.setColor(Color.black);
                   offGraphics.drawString("Loading cards... ",5,20);
                   offGraphics.drawRect(15,40, 102 ,10);
                   offGraphics.drawRect(13,38, 106 ,14);
                   offGraphics.setColor(new Color(171,205,239));
                   offGraphics.fillRect(0,0,150,35);
                   offGraphics.setColor(Color.black);
                   offGraphics.fillRect(15,40, (current_card_loading)*2 ,10);
                   offGraphics.drawString("Loading card: "+current_card_loading+1,15,20);
              else{
                   Image currentCard;
                   while(card_width == -1){
                        card_width = deck.getCard(0).getImage().getWidth(this);
                   if(card_padding == -1){
                        card_padding = (width - (card_width * 2) - 4) / 4;
                   //clear the background...
                   offGraphics.setColor(Color.blue);
                   offGraphics.fillRect(0,0,width,height);
                   offGraphics.setColor(Color.black);
                   offGraphics.fillRect(1,1,width-2,height-2);
                   offGraphics.setColor(Color.white);
                   offGraphics.drawString("PLAYER:",card_padding,40);
                   offGraphics.drawString("DEALER:",(width/2) + card_padding,40);
                   offGraphics.drawString(message,5,height - 20);
                   if(games > 0){
                        offGraphics.drawString(games + " game(s) played...",5,height - 10);
                   //Draw the players hand...
                   for(int i=0;i<player_hand.getCardCount();i++){
                        currentCard = player_hand.getCards().getImage();
                        offGraphics.drawImage(currentCard, card_padding, 70+(20*(i-1)), this);
                   //now draw the dealers hand...
                   for(int i=0;i<dealer_hand.getCardCount();i++){
                        currentCard = dealer_hand.getCards()[i].getImage();
                        offGraphics.drawImage(currentCard, (width/2 ) + card_padding, 70+(20*(i-1)), this);
              //draw buffered image.
              g.drawImage(offIm,0,0,this);
    public void run(){
              MediaTracker t=new MediaTracker(this);
              System.out.println("Frame getting cards...");
              for(current_card_loading=0; current_card_loading < 52; current_card_loading++){
              //try{
                   card_images[current_card_loading] = getImage(getCodeBase(),"cards/" + (current_card_loading+1) + ".gif");
                   if(card_images[current_card_loading] == null){
                        System.out.println("Null card... ["+current_card_loading+"]");
                   else{
                        t.addImage(card_images[current_card_loading],0);
                   try{
                        t.waitForID(0);
                   catch(InterruptedException e){
                        System.err.println("Interrupted waiting for images..>");
                   //lets show our new status.
                   repaint();
              //create the deck object now
              deck = new Deck(this,card_images);     //Create a new deck object.
              card_width = deck.getCard(0).getImage().getWidth(this);
              bHit.addActionListener(this);
              bStay.addActionListener(this);
              bRestart.addActionListener(this);
              bHit.setEnabled(false);
              bStay.setEnabled(false);
              width = getSize().width;
              height = getSize().height;
              this.add(bHit);
              this.add(bStay);
              this.add(bRestart);
              player_hand = new Hand();     //Create the hands...
              dealer_hand = new Hand();
              //make sure that the buttons appear properly.
              this.validate();
              message = "";
              cards_loaded = true;
              System.out.println("End of thread...");
              repaint();
    ----jGRASP exec: javac -g X:\NETPROG\Assignment2\Blackjack.java
    Blackjack.java:7: Blackjack is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
    public class Blackjack extends JFrame /*Applet*/ implements ActionListener,MouseListener/*,Runnable*/{
    ^
    Blackjack.java:53: cannot find symbol
    symbol : constructor Thread(Blackjack)
    location: class java.lang.Thread
         Thread card_loader = new Thread(this);
    ^
    Blackjack.java:209: cannot find symbol
    symbol : method getCodeBase()
    location: class Blackjack
                   card_images[current_card_loading] = getImage(getCodeBase(),"cards/" + (current_card_loading+1) + ".gif");
    ^
    3 errors
    ----jGRASP wedge2: exit code for process is 1.
    ----jGRASP: operation complete.
    import java.awt.*;
    import javax.swing.JFrame;
    import java.net.*;
    import java.io.*;
    class Deck {
         Card[] cards = new Card[52];
         int currCard;
         public Deck(/*Blackjack myApplet*/Blackjack myFrame,Image[] card_images) {
              // These are the (initial) values of all the cards
              int[] values = {11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10,
                   11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10};
              // Make all the cards, getting the images individually
              for (int i=0; i<52; i++) {
                   cards[i] = new Card(card_images, values[i]);
              // Shuffle the cards.
              shuffleCards();
         public void shuffleCards(){
              Card temp;
              //loop through each card in the deck and swap it with some random card.
              for (int i=0; i<52; i++) {
                   int rand = (int)(Math.random()*52);
                   temp = cards[51-i];//take the current card...
                   cards[51-i] = cards[rand];//and swap it with some random card...
                   cards[rand] = temp;
              //now, reset the currentCard to deal...
              currCard = 0;
         public Card dealCard() {
              Card card = cards[currCard];
              currCard++;
              return card;
         public Card getCard(int i) {
              return cards[i];
    ----jGRASP exec: javac -g X:\NETPROG\Assignment2\Deck.java
    Blackjack.java:6: Blackjack is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
    public class Blackjack extends JFrame implements ActionListener,MouseListener{
    ^
    Blackjack.java:45: cannot find symbol
    symbol : constructor Thread(Blackjack)
    location: class java.lang.Thread
         Thread card_loader = new Thread(this);
    ^
    Blackjack.java:201: cannot find symbol
    symbol : method getCodeBase()
    location: class Blackjack
                   card_images[current_card_loading] = getImage(getCodeBase(),"cards/" + (current_card_loading+1) + ".gif");
    ^
    3 errors
    ----jGRASP wedge2: exit code for process is 1.
    ----jGRASP: operation complete.

  • How do I convert an applet to a standalone application.

    Hi Everyone,
    I am currently working on this Applet, I have tried putting the main in and building a frame to hold the applet but everytime I try something I just get new errors, What I conclusively want to do is put the applet in a frame and add menus to the frame. I have listed the code below, its quite a lot, I hope someone can help though, am pulling hair out.
    Many Thanks. Chris
    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
      public class SciCalc extends Applet implements ActionListener
      // Entered a UID due to String conversion
        private static final long serialVersionUID = 1;
           int Counter;           //Counts the number of digits entered
           double Result;           //The answer displayed, as well as the second
                                 //operator taken for an operation
           double Operand;          //The first number entered for an operation
           double Mem;            //The variable which holds whatever value the user
                                 //wants kept in "memory"
           boolean DecimalFlag;       //The 'flag' that will signify whether or not the
                                 //decimal button has been pressed
           boolean SignFlag;        //The 'flag' that will signify whether or not the
                                 //plus/minus button has been pressed
           boolean OperatorKey;       //The 'flag' that will signify whether or not any
                                 //operator button has been pressed
           boolean FunctionKey;       //The 'flag' that will signify whether or not any
                        //function button has been pressed
           boolean Rad,Grad,Deg;     //The 'flags' that will signify that Rad, Grad or
                        //deg has been pressed
           int Operator;          //an integer value to indicate which operator
                                 //button was pressed
         char currchar;           //a character to hold the value of the key most
                                 //recently pressed
           String GrStatus;         //String to hold the status of various graphic
                                 //operations of the program
           String Status;           //String to hold the status of various parts
                                 //of the program
    //     LABEL DECLARATIONS 
         //This label will display all error messages
           Label DisplError = new Label(" ",Label.CENTER);
           //This label is just to the left of the Display Label lcdDisplay, and will
           //indicate whether or not a value is being held in the calculator's "memory"
           Label LabelMem = new Label(" ",Label.LEFT);
           Label LabelRad = new Label(" ",Label.CENTER);
           Label LabelDeg = new Label(" ",Label.CENTER);
           Label LabelGrad = new Label(" ",Label.CENTER);
         //This is the Display Label, which is declared as a label so the user will not
            //be able to enter any text into it to possibly crash the calculator
           Label lcdDisplay = new Label("0",Label.RIGHT);
           Label SciCalc = new Label ("Sci Calc V1.0",Label.CENTER);
    //      END OF LABEL DECLARATIONS 
    public void surround (Graphics g){
        g.setColor(new Color(0,0,0));
        g.drawRect(0,0,350,400);
    //      DELCLARATION OF NUMERIC BUTTONS
           Button button1 = new Button("1");
           Button button2 = new Button("2");
           Button button3 = new Button("3");
           Button button4 = new Button("4");
           Button button5 = new Button("5");
           Button button6 = new Button("6");
           Button button7 = new Button("7");
           Button button8 = new Button("8");
           Button button9 = new Button("9");
           Button button0 = new Button("0");
    //      END OF NUMERIC BUTTON DECLARATION
    //     DECLARATION OF OPERATOR BUTTONS
           Button buttonMinus      = new Button("-");
           Button buttonMultiply   = new Button("x");
           Button buttonPlus       = new Button("+");
           Button buttonEquals     = new Button("=");
           Button buttonDivide     = new Button("�");
           Button buttonClear      = new Button("C");
           Button buttonDecimal    = new Button(".");
           Button buttonMPlus      = new Button("M+");
           Button buttonMClear     = new Button("MC");
           Button buttonMRecall       = new Button("MR");
    //     END OF OPERATOR BUTTON DECLARATION 
    //     SCIENTIFIC BUTTON DECLARATION
           Button buttonPi            = new Button("Pi");
           Button buttonSqrt       = new Button("Sqrt");
           Button buttonCbrt       = new Button("Cbrt");
           Button buttonx2            = new Button("x2");
           Button buttonyX         = new Button("yX");
           Button buttonPlusMinus  = new Button("+-");
           Button buttonRad        = new Button("RAD");
           Button buttonGrad       = new Button("GRAD");
           Button buttonDeg        = new Button("DEG");
           Button buttonSin        = new Button("SIN");
           Button buttonCos           = new Button("COS");
           Button buttonTan        = new Button("TAN");
           Button buttonExp        = new Button("EXP");
           Button buttonLogn           = new Button("Ln");
           Button buttonOpenBracket  = new Button("(");
           Button buttonLog        = new Button("log");
    //     END OF SCIENTIFIC BUTTON DECLARATION
    //     START OF INIT METHOD
    //This the only method that is called explicitly -- every other method is
    //called depending on the user's actions.
    public void init()
    //Allows for configuring a layout with the restraints of a grid or
    //something similar
         setLayout(null);
             //APPLET DEFAULTS
        //This will resize the applet to the width and height provided
             resize(350,400);
        //This sets the default font to Helvetica, plain, size 12
                  setFont(new Font("Helvetica", Font.PLAIN, 12));
        //This sets the applet background colour
                       setBackground(new Color(219,240,219));
         //END OF APPLET DEFAULTS
         //LABEL INITIALISATION     
    //Display Panel, which appears at the top of the screen. The label is
    //placed and sized with the setBounds(x,y,width,height) method, and the
    //font, foreground color and background color are all set. Then the
    //label is added to the layout of the applet.
             lcdDisplay.setBounds(42,15,253,30);
             lcdDisplay.setFont(new Font("Helvetica", Font.PLAIN, 14));
             lcdDisplay.setForeground(new Color(0,0,0));
             lcdDisplay.setBackground(new Color(107,128,128));
             add(lcdDisplay);
    //Memory Panel, which appears just to the right of the Display Panel.
    //The label is placed and sized with the setBounds(x,y,width,height)
    //method, and the font, foreground color and background color are all
    //set. Then the label is added to the layout of the applet.
             LabelMem.setBounds(20,15,20,30);
             LabelMem.setFont(new Font("Helvetica", Font.BOLD, 16));
             LabelMem.setForeground(new Color(193,0,0));
             LabelMem.setBackground(new Color(0,0,0));
             add(LabelMem);
    //Rad,Grad and Deg panels,which appear below the memory panel.
             LabelRad.setBounds(20,50,20,15);
             LabelRad.setFont(new Font("Helvetica", Font.BOLD, 8));
             LabelRad.setForeground(new Color(193,0,0));
             LabelRad.setBackground(new Color(0,0,0));
             add(LabelRad);
             LabelDeg.setBounds(20,70,20,15);
             LabelDeg.setFont(new Font("Helvetica", Font.BOLD, 8));
             LabelDeg.setForeground(new Color(193,0,0));
             LabelDeg.setBackground(new Color(0,0,0));
             add(LabelDeg);
             LabelGrad.setBounds(20,90,20,15);
             LabelGrad.setFont(new Font("Helvetica", Font.BOLD, 8));
             LabelGrad.setForeground(new Color(193,0,0));
             LabelGrad.setBackground(new Color(0,0,0));
             add(LabelGrad);
    //SciCalc v1.0 Label, this merely indicates the name.        
             SciCalc.setBounds(60,350,200,50);
             SciCalc.setFont(new Font("papyrus", Font.BOLD, 25));
             SciCalc.setForeground(new Color(0,50,191));
             SciCalc.setBackground(new Color(219,219,219));
             add(SciCalc);
         //END OF LABEL INITIALISATION
         //NUMERIC BUTTON INITIALISATION
             button1.addActionListener(this);
             button1.setBounds(42,105,60,34);
             button1.setForeground(new Color(0,0,0));
             button1.setBackground(new Color(128,128,128));
             button1.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button1);
             button2.addActionListener(this);
             button2.setBounds(106,105,60,34);
             button2.setForeground(new Color(0,0,0));
             button2.setBackground(new Color(128,128,128));
             button2.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button2);
             button3.addActionListener(this);
             button3.setBounds(170,105,60,34);
             button3.setForeground(new Color(0,0,0));
             button3.setBackground(new Color(128,128,128));
             button3.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button3);
             button4.addActionListener(this);
             button4.setBounds(42,145,60,34);
             button4.setForeground(new Color(0,0,0));
             button4.setBackground(new Color(128,128,128));
             button4.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button4);
             button5.addActionListener(this);
             button5.setBounds(106,145,60,34);
             button5.setForeground(new Color(0,0,0));
             button5.setBackground(new Color(128,128,128));
             button5.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button5);
             button6.addActionListener(this);
             button6.setBounds(170,145,60,34);
             button6.setForeground(new Color(0,0,0));
             button6.setBackground(new Color(128,128,128));
             button6.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button6);
             button7.addActionListener(this);
             button7.setBounds(42,185,60,34);
             button7.setForeground(new Color(0,0,0));
             button7.setBackground(new Color(128,128,128));
             button7.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button7);
             button8.addActionListener(this);
             button8.setBounds(106,185,60,34);
             button8.setForeground(new Color(0,0,0));
             button8.setBackground(new Color(128,128,128));
             button8.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button8);
             button9.addActionListener(this);
             button9.setBounds(170,185,60,34);
             button9.setForeground(new Color(0,0,0));
             button9.setBackground(new Color(128,128,128));
             button9.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button9);
             button0.addActionListener(this);
             button0.setBounds(106,225,60,34);
             button0.setForeground(new Color(0,0,0));
             button0.setBackground(new Color(128,128,128));
             button0.setFont(new Font("Dialog", Font.BOLD, 18));
             add(button0);
         //END OF NUMERIC BUTTON INITIALISATION        
         //OPERATOR BUTTON INITIALISATION         
             buttonDecimal.addActionListener(this);
             buttonDecimal.setBounds(42,225,60,34);
             buttonDecimal.setForeground(new Color(0,0,0));
             buttonDecimal.setBackground(new Color(254,204,82));
             buttonDecimal.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonDecimal);
             buttonPlusMinus.addActionListener(this);
             buttonPlusMinus.setBounds(106,325,60,17);
             buttonPlusMinus.setForeground(new Color(0,0,0));
             buttonPlusMinus.setBackground(new Color(0,118,191));
             buttonPlusMinus.setFont(new Font("Dialog", Font.BOLD, 16));
             add(buttonPlusMinus);
             buttonMinus.addActionListener(this);
             buttonMinus.setBounds(234,145,60,34);
             buttonMinus.setForeground(new Color(0,0,0));
             buttonMinus.setBackground(new Color(254,204,82));
             buttonMinus.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonMinus);
             buttonMultiply.addActionListener(this);
             buttonMultiply.setBounds(234,225,60,34);
             buttonMultiply.setForeground(new Color(0,0,0));
             buttonMultiply.setBackground(new Color(254,204,82));
             buttonMultiply.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonMultiply);
             buttonPlus.addActionListener(this);
             buttonPlus.setBounds(234,105,60,34);
             buttonPlus.setForeground(new Color(0,0,0));
             buttonPlus.setBackground(new Color(254,204,82));
             buttonPlus.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonPlus);
             buttonEquals.addActionListener(this);
             buttonEquals.setBounds(170,225,60,34);
             buttonEquals.setForeground(new Color(0,0,0));
             buttonEquals.setBackground(new Color(254,204,82));
             buttonEquals.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonEquals);
             buttonDivide.addActionListener(this);
             buttonDivide.setBounds(234,185,60,34);
             buttonDivide.setForeground(new Color(0,0,0));
             buttonDivide.setBackground(new Color(254,204,82));
             buttonDivide.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonDivide);
             buttonClear.addActionListener(this);
             buttonClear.setBounds(234,65,60,34);
             buttonClear.setFont(new Font("Dialog", Font.BOLD, 18));
             buttonClear.setForeground(new Color(0,0,0));
             buttonClear.setBackground(new Color(193,0,0));
             add(buttonClear);
             buttonMPlus.addActionListener(this);
             buttonMPlus.setBounds(170,65,60,34);
             buttonMPlus.setFont(new Font("Dialog", Font.BOLD, 18));
             buttonMPlus.setForeground(new Color(0,0,0));
             buttonMPlus.setBackground(new Color(254,204,82));
             add(buttonMPlus);
             buttonMClear.addActionListener(this);
             buttonMClear.setBounds(42,65,60,34);
             buttonMClear.setForeground(new Color(193,0,0));
             buttonMClear.setBackground(new Color(254,204,82));
             buttonMClear.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonMClear);
             buttonMRecall.addActionListener(this);
             buttonMRecall.setBounds(106,65,60,34);
             buttonMRecall.setForeground(new Color(0,0,0));
             buttonMRecall.setBackground(new Color(254,204,82));
             buttonMRecall.setFont(new Font("Dialog", Font.BOLD, 18));
             add(buttonMRecall);
         //END OF OPERATOR BUTTON INITIALISATION
         // SCIENTIFIC BUTTONS INITIALISATION   
             buttonPi.addActionListener(this);
             buttonPi.setBounds(42,265,60,17);
             buttonPi.setForeground(new Color(0,0,0));
             buttonPi.setBackground(new Color(0,118,191));
             buttonPi.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonPi);
             buttonSqrt.addActionListener(this);
             buttonSqrt.setBounds(106,265,60,17);
             buttonSqrt.setForeground(new Color(0,0,0));
             buttonSqrt.setBackground(new Color(0,118,191));
             buttonSqrt.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonSqrt);
             buttonCbrt.addActionListener(this);
             buttonCbrt.setBounds(170,265,60,17);
             buttonCbrt.setForeground(new Color(0,0,0));
             buttonCbrt.setBackground(new Color(0,118,191));
             buttonCbrt.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonCbrt);
             buttonyX.addActionListener(this);
             buttonyX.setBounds(42,285,60,17);
             buttonyX.setForeground(new Color(0,0,0));
             buttonyX.setBackground(new Color(0,118,191));
             buttonyX.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonyX);
             buttonx2.addActionListener(this);
             buttonx2.setBounds(234,265,60,17);
             buttonx2.setForeground(new Color(0,0,0));
             buttonx2.setBackground(new Color(0,118,191));
             buttonx2.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonx2);
             buttonRad.addActionListener(this);
             buttonRad.setBounds(170,285,60,17);
             buttonRad.setForeground(new Color(0,0,0));
             buttonRad.setBackground(new Color(0,118,191));
             buttonRad.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonRad);
             buttonGrad.addActionListener(this);
             buttonGrad.setBounds(234,285,60,17);
             buttonGrad.setForeground(new Color(0,0,0));
             buttonGrad.setBackground(new Color(0,118,191));
             buttonGrad.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonGrad);
             buttonDeg.addActionListener(this);
             buttonDeg.setBounds(106,285,60,17);
             buttonDeg.setForeground(new Color(0,0,0));
             buttonDeg.setBackground(new Color(0,118,191));
             buttonDeg.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonDeg);
             buttonSin.addActionListener(this);
             buttonSin.setBounds(42,305,60,17);
             buttonSin.setForeground(new Color(0,0,0));
             buttonSin.setBackground(new Color(0,118,191));
             buttonSin.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonSin);
             buttonCos.addActionListener(this);
             buttonCos.setBounds(106,305,60,17);
             buttonCos.setForeground(new Color(0,0,0));
             buttonCos.setBackground(new Color(0,118,191));
             buttonCos.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonCos);
             buttonTan.addActionListener(this);
             buttonTan.setBounds(170,305,60,17);
             buttonTan.setForeground(new Color(0,0,0));
             buttonTan.setBackground(new Color(0,118,191));
             buttonTan.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonTan);
             buttonExp.addActionListener(this);
             buttonExp.setBounds(234,305,60,17);
             buttonExp.setForeground(new Color(193,0,0));
             buttonExp.setBackground(new Color(0,118,191));
             buttonExp.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonExp);
             buttonLogn.addActionListener(this);
             buttonLogn.setBounds(234,325,60,17);
             buttonLogn.setForeground(new Color(0,0,0));
             buttonLogn.setBackground(new Color(0,118,191));
             buttonLogn.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonLogn);
             buttonOpenBracket.addActionListener(this);
             buttonOpenBracket.setBounds(42,325,60,17);
             buttonOpenBracket.setForeground(new Color(0,0,0));
             buttonOpenBracket.setBackground(new Color(0,118,191));
             buttonOpenBracket.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonOpenBracket);
             buttonLog.addActionListener(this);
             buttonLog.setBounds(170,325,60,17);
             buttonLog.setForeground(new Color(0,0,0));
             buttonLog.setBackground(new Color(0,118,191));
             buttonLog.setFont(new Font("Dialog", Font.BOLD, 10));
             add(buttonLog);
         //END OF SCIENTIFIC BUTTON INITIALISATION     
         //DISPLERROR INITIALISATION      
             DisplError.setBounds(42,45,253,15);
             DisplError.setFont(new Font("Dialog", Font.BOLD, 8));
             DisplError.setForeground(new Color(16711680));
             DisplError.setBackground(new Color(0));
             add(DisplError);
         //END OF DISPLERROR INITIALISATION
             Clicked_Clear();      //calls the Clicked_Clear method (C button)
         } //END OF INIT METHOD
    //The following integers are declared as final as they will
    //be used for determining which button has been pushed
         public final static int OpMinus=11,
                                     OpMultiply=12,
                                     OpPlus=13,
                                     OpDivide=15,
                                     OpMPlus=19,
                                     OpMClear=20,
                                     OpMR=21,
                                     OpyX=22,
                                     OpExp=23;
    //This method is called whenever anything needs to be displayed
    //in the error message field at the bottom of the calculator,
    //accepting a String as an argument
      void DisplayError(String err_msg)
    //Calls the setText method of the Label DisplError, sending
    //whatever string it received initially
        DisplError.setText(err_msg);
    //This method is called whenever a numeric button (0-9) is pushed.
    public void NumericButton(int i)
         DisplayError(" ");      //Clears the error message field
    //Declares a String called Display that will initialize to whatever
    //is currently displayed in the lcdDisplay of the calculator
        String Display = lcdDisplay.getText();
    //Checks if an operator key has just been pressed, and if it has,
    //then the limit of 20 digits will be reset for the user so that
    //they can enter in up to 20 new numbers
             if (OperatorKey == true)
               Counter = 0;
             Counter = Counter + 1;    //increments the counter
    //This is a condition to see if the number currently displayed is zero OR
    //an operator key other than +, -, *, or / has been pressed.
             if ((Display == "0") || (Status == "FIRST"))
               Display= "";      //Do not display any new info
             if (Counter < 21)     //if more than 20 numbers are entered
    //The number just entered is appended to the string currently displayed
         Display = Display + String.valueOf(i);
             else
    //call the DisplayError method and send it an error message string
         DisplayError("Digit Limit of 20 Digits Reached");
         lcdDisplay.setText(Display);       //sets the text of the lcdDisplay          
                                       //Label
        Status = "VALID";            //sets the Status string to valid
        OperatorKey = false;           //no operator key was pressed
        FunctionKey = false;           //no function key was pressed
    //This method is called whenever an operator button is pressed, and is   
    //sent an integer value representing the button pressed.
           public void OperatorButton(int i)
         DisplayError(" ");      //Clears the error message field
    //Creates a new Double object with the specific purpose of retaining
    //the string currently on the lcdDisplay label, and then immediately
    //converts that string into a double-precision real number and then
    //gives that number to the variable Result.
             Result = (new Double(lcdDisplay.getText())).doubleValue();
    //If no operator key has been pressed OR a function has been pressed
         if ((OperatorKey == false) || (FunctionKey = true))
         switch (Operator)     //depending on the operation performed
    //if the user pressed the addition button, add the two numbers
    //and put them in double Result
            case OpPlus     : Result = Operand + Result;
                      break;
    //if the user pressed the subtraction button, subtract the two
    //numbers and put them in double Result
         case OpMinus    : Result = Operand - Result;
                      break;
    //if the user pressed the multiplication button, multiply
    //the two numbers and put them in double Result
            case OpMultiply : Result = Result * Operand;
                      break;
    //if the user pressed the yX button, take first number
    //and multiply it to the power of the second number                 
         case OpyX : double temp1=Operand;
                        for (int loop=0; loop<Result-1; loop++){
                              temp1= temp1*Operand;
                        Result=temp1;
                      break;
    //if the user pressed the Exp button -----------------Find out what this does-------------         
         case OpExp :  temp1=10;
                          for(int loop=0; loop<Result-1; loop++)
                          temp1=temp1*10;
                           Result=Result*temp1;
                     break;
    //if the user pressed the division button, check to see if
    //the second number entered is zero to avoid a divide-by-zero
    //exception
            case OpDivide   : if (Result == 0)
                        //set the Status string to indicate an
                        //an error
                        Status = "ERROR";
                        //display the word "ERROR" on the
                        //lcdDisplay label
                        lcdDisplay.setText("ERROR");
                        //call the DisplayError method and
                        //send it a string indicating an error
                        //has occured and of what type
                        DisplayError("ERROR: Division by Zero");
                      else
                        //divide the two numbers and put the
                        //answer in double Result
                   Result = Operand / Result;
    //if after breaking from the switch the Status string is not set
    //to "ERROR"
              if (Status != "ERROR")
            Status = "FIRST";      //set the Status string to "FIRST" to
                                 //indicate that a simple operation was
                                 //not performed
            Operand = Result; //Operand holds the value of Result
            Operator = i;   //the integer value representing the
                            //operation being performed is stored
                            //in the integer Operator
            //The lcdDisplay label has the value of double Result
            //displayed
         lcdDisplay.setText(String.valueOf(Result));
            //The boolean decimal flag is set false, indicating that the
            //decimal button has not been pressed
         DecimalFlag = false;
            //The boolean sign flag is set false, indicating that the sign
            //button has not been pressed
         SignFlag = false;
            //The boolean OperatorKey is set true, indicating that a simple
            //operation has been performed
         OperatorKey = true;
            //The boolean FunctionKey is set false, indicating that a
            //function key has not been pressed
         FunctionKey = false;
            DisplayError(" ");    //Clears the error message field
      }     //end of OperatorButton method
      //This is a method that is called whenever the decimal button is
      //pressed.
      public void DecimalButton()
        DisplayError(" ");    //Clears the error message field
      //Declares a String called Display that will initialize to whatever
      //is currently displayed in the lcdDisplay of the calculator
        String Display = lcdDisplay.getText();
        //if a simple operation was performed successfully
         if (Status == "FIRST")
          Display = "0";    //set Display string to character 0
        //If the decimal button has not already been pressed
         if (!DecimalFlag)
          //appends a decimal to the string Display
          Display = Display + ".";
        else
               //calls the DisplayError method, sending a string
               //indicating that the number already has a decimal
          DisplayError("Number already has a Decimal Point");
             //calls the setText method of the Label lcdDisplay and
              //sends it the string Display
        lcdDisplay.setText(Display);
         DecimalFlag = true;        //the decimal key has been pressed
             Status = "VALID";        //Status string indicates a valid
                               //operation has been performed
        OperatorKey = false;         //no operator key has been pressed
      } //end of the DecimalButton method
      /* This method is called whenever the percent button is pressed
      void Open_Bracket(){
        String Display = "(";
        lcdDisplay.setText(Display);//-----------Change this--------------
    //This method is called first when the calculator is initialized
    //with the init() method, and is called every time the "C" button
    //is pressed
      void Clicked_Clear()
        Counter = 0;        //sets the counter to zero
        Status = "FIRST";   //sets Status to FIRST
        Operand = 0;        //sets Operand to zero
        Result = 0;         //sets Result to zero
        Operator = 0;       //sets Operator integer to zero
        DecimalFlag = false;         //decimal button has not been
                                     //pressed
        SignFlag = false;          //sign button has not been pressed
        OperatorKey = false;         //no operator button has been
                                //pressed
        FunctionKey = false;         //no function button has been
                                //pressed
    //calls the setText method of Label lcdDisplay and sends
    //it the character "0"
        lcdDisplay.setText("0"); 
        DisplayError(" ");           //clears the error message field
    //This method is called whenever the sign button is pressed
         void PlusMinusButton()
        DisplayError(" ");           //clears the error message field
    //Declares a String called Display that will initialize to whatever
    //is currently displayed in the lcdDisplay of the calculator
        String Display = lcdDisplay.getText();
    //if Status is not set to FIRST and the Display string does not
    //hold the value "0"
        if ((Status != "FIRST") || (Display != "0"))
    //Creates a new Double object with the specific purpose of retaining
    //the string currently on the lcdDisplay label, and then immediately
    //converts that string into a double-precision real number and then
    //gives that number to the variable Result.
          Result = (new Double(lcdDisplay.getText())).doubleValue();
          //sets the double Result to it's negative value
          Result = -Result;
          //call the setText method of Label lcdDisplay and send it the string
          //that represents the value in Result
          lcdDisplay.setText(String.valueOf(Result));
          Status = "VALID";        //sets Status string to VALID
          SignFlag = true;         //the sign button has been pressed
          DecimalFlag = true;        //a decimal has appeared
      } //end of the PlusMinusButton method
    //This method is called whenever the square button is pressed */
         void SqrButton()
        DisplayError(" ");      //clears the error message field
    //Declares a String called Display that will initialize to whatever
    //is currently displayed in the lcdDisplay of the calculator
        String Display = lcdDisplay.getText();
    //if Status is not set to FIRST and the Display string does not
    //hold the value "0"
        if ((Status != "FIRST") || (Display != "0"))
    //Creates a new Double object with the specific purpose of retaining
    //the string currently on the lcdDisplay label, and then immediately
    //converts that string into a double-precision real number and then
    //gives that number to the variable Result.
          Result = (new Double(lcdDisplay.getText())).doubleValue();
    //multiply the double Result by itself, effectively squaring
    //the number
          Result = Result * Result;
    //call the setText method of Label lcdDisplay and send it the string
    //that represents the value in Result
         lcdDisplay.setText(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                &

    Chris,
    Two issues:
    1) Applet has init(), start(), etc. Application has main().
    2) Applet is a container and you can add stuff to it. With application, you need to create your own container.
    What you want to do is code so that you can run either way. In the applet, create a Panel or JPanel and add everything to the panel. Then add the panel to the applet. Get that working as an applet.
    Now add a main(). All it has to do is create a Frame or JFrame, add the panel to the frame and then call init().
    On another subject, your code looks very good, except for the method length getting out of hand. Try breaking init() into pieces in a bunch of methods:
    public void init() {
       doThis();
       doThat();
       doTheOther();
    private void doThis() {
       // maybe a couple dozen lines here
    // etc.

  • There is anyone can convert applet code to application code?

    i got this applet code and would like to convert it to application code but don't know how.Anybody convert this please?
    thanks in advance.
    [email protected]
    //This program was completely written by Peter Wetsel.
    //If there are any questions about this code you
    //can email me at [email protected]
    //To get it to compile using jdk type "javac -nowarn battle.java".
    import java.util.*;
    import java.lang.*;
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.lang.*;
    public class battle extends java.applet.Applet implements Runnable {
         Color col;
         String message= new String("");//holds the message placed in the upper left
         String Status = new String("");
         String message2[]= new String[5];//holds the destroyed messages in order for repainting.
         int hits=0;//the total number of hits by the player
         int numDestroyed=0;//the number of ships destroyed by the player
         int battlepos[]=new int[4];//the 4 positions of the battleship
    int carrierpos[]=new int[5];//the 5 positions of the carrier
         int subpos[]=new int[3];//the 3 positions of the submarine
         int patrolpos[]=new int[2];//the 2 positions of the patrol boat
         int destroyerpos[]=new int[3]; //the 3 positions of the destroyer
         int guesses=0;// the number of guesses by the player
         int player[][]=new int[10][10]; //to hold the positions of the player.(not until version 2)
         int guessed[][]=new int[10][10]; //hold the places that have been guessed by the player
         int computer[][]=new int[10][10]; //holds where the computers ships are
         int battleshipHitCt, destroyerHitCt, subHitCt, patrolHitCt, carrierHitCt;//keeps the hit count for each of the ships
         boolean init=false;//false until play is pushed.
         boolean ok=false;//boolean that is true if current boat position chosen by random is ok(getcarrier(), etc.)
         boolean battleOK=true;//false when the type of ship is destroyed
         boolean patrolOK=true;//...
         boolean subOK=true;//...
         boolean destroyerOK=true;//...
         boolean carrierOK=true;//...
         boolean won=false;//true when the player has won
         int o;
    public static void main (String args [])
    Frame frame = new Frame () ;
    battle applet = new battle () ;
    frame.add (applet) ;
    applet.init () ;
    applet.paint(g);
    applet.start () ;
         public void getCarrier(){
              int x, y, dir; //will hold a random x & y coordinate(0-9), and a random direction(0-1)(N,E,S,W)
              x=(int)(10*Math.random());
              y=(int)(10*Math.random());
              dir=(int)(100*Math.random()/25);
              if(dir==0)
                   while(y<4){
                        y=(int)(10*Math.random());
                   for (int i=0; i<5; i++){
                        computer[x][y-i]=1;
                        carrierpos=x*10+y-i;
              if (dir==1)
                   while(x>5){
                        x=(int)(10*Math.random());
                   for (int i=0; i<5; i++){
                        computer[x+i][y]=1;
                        carrierpos[i]=(x+i)*10+y;
              if (dir==2)
                   while(y>5){
                        y=(int)(10*Math.random());
                   for (int i=0; i<5; i++){
                        computer[x][y+i]=1;
                        carrierpos[i]=x*10+y+i;
              if (dir==3)
                   while(x<4){
                        x=(int)(10*Math.random());
                   for (int i=0; i<5; i++){
                        computer[x-i][y]=1;
                        carrierpos[i]=(x-i)*10+y;
         public void getBattle(){
              int x, y, dir;
              x=(int)(10*Math.random());
              y=(int)(10*Math.random());
              dir=(int)(100*Math.random()/25);
              while(!ok){
                   ok=true;
                   x=(int)(10*Math.random());
                   y=(int)(10*Math.random());
                   dir=(int)(100*Math.random()/25);
                   if(dir==0)
                        while(y<3){
                             y=(int)(10*Math.random());
                        for (int i=0; i<4; i++){
                             o=computer[x][y-i];
                             if (o==1){
                                  ok=false;
                   if (dir==1)
                        while(x>6){
                             x=(int)(10*Math.random());
                        for (int i=0; i<4; i++){
                             o=computer[x+i][y];
                             if (o==1){
                                  ok=false;
                   if (dir==2)
                        while(y>6){
                             y=(int)(10*Math.random());
                        for (int i=0; i<4; i++){
                             o=computer[x][y+i];
                             if (o==1){
                                  ok=false;
                   if (dir==3)
                        while(x<3){
                             x=(int)(10*Math.random());
                        for (int i=0; i<4; i++){
                             o=computer[x-i][y];
                             if (o==1){
                                  ok=false;
              if(dir==0)
                   for (int i=0; i<4; i++){
                        computer[x][y-i]=1;
                        battlepos[i]=x*10+y-i;
              if (dir==1)
                   for (int i=0; i<4; i++){
                        computer[x+i][y]=1;
                        battlepos[i]=(x+i)*10+y;
              if (dir==2)
                   for (int i=0; i<4; i++){
                        computer[x][y+i]=1;
                        battlepos[i]=x*10+y+i;
              if (dir==3)
                   for (int i=0; i<4; i++){
                        computer[x-i][y]=1;
                        battlepos[i]=(x-i)*10+y;
         public void getSub(){
              int x, y, dir;
              x=(int)(10*Math.random());
              y=(int)(10*Math.random());
              dir=(int)(100*Math.random()/25);
              while(!ok){
                   ok=true;
                   x=(int)(10*Math.random());
                   y=(int)(10*Math.random());
                   dir=(int)(100*Math.random()/25);
                   if(dir==0)
                        while(y<2){
                             y=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x][y-i];
                             if (o==1){
                                  ok=false;
                   if (dir==1)
                        while(x>7){
                             x=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x+i][y];
                             if (o==1){
                                  ok=false;
                   if (dir==2)
                        while(y>7){
                             y=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x][y+i];
                             if (o==1){
                                  ok=false;
                   if (dir==3)
                        while(x<2){
                             x=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x-i][y];
                             if (o==1){
                                  ok=false;
              if(dir==0)
                   for (int i=0; i<3; i++){
                        computer[x][y-i]=1;
                        subpos[i]=x*10+y-i;
              if (dir==1)
                   for (int i=0; i<3; i++){
                        computer[x+i][y]=1;
                        subpos[i]=(x+i)*10+y;
              if (dir==2)
                   for (int i=0; i<3; i++){
                        computer[x][y+i]=1;
                        subpos[i]=x*10+y+i;
              if (dir==3)
                   for (int i=0; i<3; i++){
                        computer[x-i][y]=1;
                        subpos[i]=(x-i)*10+y;
         public void getDestroyer(){
              int x, y, dir;
              x=(int)(10*Math.random());
              y=(int)(10*Math.random());
              dir=(int)(100*Math.random()/25);
              while(!ok){
                   ok=true;
                   x=(int)(10*Math.random());
                   y=(int)(10*Math.random());
                   dir=(int)(100*Math.random()/25);
                   if(dir==0)
                        while(y<2){
                             y=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x][y-i];
                             if (o==1){
                                  ok=false;
                   if (dir==1)
                        while(x>7){
                             x=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x+i][y];
                             if (o==1){
                                  ok=false;
                   if (dir==2)
                        while(y>7){
                             y=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x][y+i];
                             if (o==1){
                                  ok=false;
                   if (dir==3)
                        while(x<2){
                             x=(int)(10*Math.random());
                        for (int i=0; i<3; i++){
                             o=computer[x-i][y];
                             if (o==1){
                                  ok=false;
              if(dir==0)
                   for (int i=0; i<3; i++){
                        computer[x][y-i]=1;
                        destroyerpos[i]=x*10+y-i;
              if (dir==1)
                   for (int i=0; i<3; i++){
                        computer[x+i][y]=1;
                        destroyerpos[i]=(x+i)*10+y;
              if (dir==2)
                   for (int i=0; i<3; i++){
                        computer[x][y+i]=1;
                        destroyerpos[i]=x*10+y+i;
              if (dir==3)
                   for (int i=0; i<3; i++){
                        computer[x-i][y]=1;
                        destroyerpos[i]=(x-i)*10+y;
         public void getPatrol(){
              int x, y, dir;
              x=(int)(10*Math.random());
              y=(int)(10*Math.random());
              dir=(int)(100*Math.random()/25);
              while(!ok){
                   ok=true;
                   x=(int)(10*Math.random());
                   y=(int)(10*Math.random());
                   dir=(int)(100*Math.random()/25);
                   if(dir==0)
                        while(y<1){
                             y=(int)(10*Math.random());
                        for (int i=0; i<2; i++){
                             o=computer[x][y-i];
                             if (o==1){
                                  ok=false;
                   if (dir==1)
                        while(x>8){
                             x=(int)(10*Math.random());
                        for (int i=0; i<2; i++){
                             o=computer[x+i][y];
                             if (o==1){
                                  ok=false;
                   if (dir==2)
                        while(y>8){
                             y=(int)(10*Math.random());
                        for (int i=0; i<2; i++){
                             o=computer[x][y+i];
                             if (o==1){
                                  ok=false;
                   if (dir==3)
                        while(x<1){
                             x=(int)(10*Math.random());
                        for (int i=0; i<2; i++){
                             o=computer[x-i][y];
                             if (o==1){
                                  ok=false;
              if(dir==0)
                   for (int i=0; i<2; i++){
                        computer[x][y-i]=1;
                        patrolpos[i]=x*10+y-i;
              if (dir==1)
                   for (int i=0; i<2; i++){
                        computer[x+i][y]=1;
                        patrolpos[i]=(x+i)*10+y;
              if (dir==2)
                   for (int i=0; i<2; i++){
                        computer[x][y+i]=1;
                        patrolpos[i]=x*10+y+i;
              if (dir==3)
                   for (int i=0; i<2; i++){
                        computer[x-i][y]=1;
                        patrolpos[i]=(x-i)*10+y;
         public void run(){// to be in here so can compile
         public void init() {
              for (int i=0; i<10; i++){//initializes the guessed matrix to be all 2's(not been guessed)
                   for (int j=0;j<10; j++){
                        guessed[i][j]=2;
              for (int i=0; i<2; i++){//initializes array to be all zeros
                   patrolpos[i]=0;
              for (int i=0; i<2; i++){
                   destroyerpos[i]=0;
              for (int i=0; i<2; i++){
                   subpos[i]=0;
              for (int i=0; i<2; i++){
                   carrierpos[i]=0;
              for (int i=0; i<2; i++){
                   battlepos[i]=0;
              battleshipHitCt=0;//initialize all hit counts
              destroyerHitCt=0;
              subHitCt=0;
              patrolHitCt=0;
              carrierHitCt=0;
         //get all boat positions
              getCarrier();
              ok=false;
              getBattle();
              ok=false;
              getDestroyer();
              ok=false;
              getSub();
              ok=false;
              getPatrol();
         public void paint(Graphics g) { //this is the shots paint method... draws a line from its last position to its current position, basically
         if (!init && !won){//draws screen before play is pushed
                   g.setColor(col.white);
                   g.fillRect(0,0,600,320);
                   g.setColor(col.black);
                   g.fillRect(20,20,30,25);
                   g.setColor(col.white);
                   g.drawString("PLAY", 23,30);
                   g.setColor(col.black);
                   g.drawString("This is different that usual battleship, here the goal is",23,65);
                   g.drawString("to find all of the computers ships in the least number of guesses.",23,85);
                   g.drawString("<30 turns --- You have too much luck!", 23, 105);
                   g.drawString("31-50 turns --- Excellent!", 23, 125);
                   g.drawString(">=51 turns --- You have no skills!", 23, 145);
                   g.drawString("PRESS PLAY TO BEGIN", 23, 165);
              if (init && !won){//draws grid and messages
                   g.setColor(col.black);
                   g.fillRect(0,0,600,320); //makes big, black rectangle washover
                   g.setColor(col.white);
                   g.drawString("# of Guesses = " + guesses,500, 280);
                   for (int i=0; i<11; i++)
                        g.drawLine(20,20+i*28, 300, 20+i*28);
                   for (int i=0; i<11; i++)
                        g.drawLine(20+i*28,20,20+i*28,300);
                   char ch='A';
                   for (int i=0; i<10; i++){//draws letter accross the top
                        g.drawString(ch+" ",30+28*i,13);
                        ch++;
                   ch='1';
                   for (int i=0; i<9; i++){//draws numbers down the side
                        g.drawString(ch+" ",10,40+28*i);
                        ch++;
                   g.drawString("10", 6,290);
                   g.drawString(message,420,40);
                   for (int i=0; i<numDestroyed; i++){
                        g.drawString(message2[i], 305, 40+(i+1)*20);
                   g.setColor(col.black);
                   //next puts in any circles already guessed
                   for (int i=0; i<10; i++)
                        for (int j=0; j<10;j++){
                             if (guessed[i][j]==1)     {
                                  g.setColor(col.red);
                                  g.fillOval(i*28+30, j*28+30, 10,10);
                             if (guessed[i][j]==0)     {
                                  g.setColor(col.white);
                                  g.fillOval(i*28+30, j*28+30, 10,10);
         public boolean seeifahit(int x, int y){//sees if the shot was a hit or not
              if(computer[x][y]==1)
                   return true;
              return false;
         public String getshiptype(int x, int y){//returns the name of the ship that was hit
              for (int i=0;i<4; i++)
                   if (battlepos[i]==x*10+y){
                        battleshipHitCt++;
                        return "Battleship";
              for (int i=0;i<3; i++)
                   if (subpos[i]==x*10+y){
                        subHitCt++;
                        return "Submarine";
              for (int i=0;i<2; i++)
                   if (patrolpos[i]==x*10+y){
                        patrolHitCt++;
                        return "Patrol Boat";
              for (int i=0;i<5; i++)
                   if (carrierpos[i]==x*10+y){
                        carrierHitCt++;
                        return "Carrier";
              for (int i=0;i<3; i++)
                   if (destroyerpos[i]==x*10+y){
                        destroyerHitCt++;
                        return "Destroyer";
              return " ";
         public void gameOver(){//displays guesses and ends
              if (!won){
                   Graphics g = getGraphics() ;
                   g.setColor(col.black);
                   g.fillRect(0,0,600,320); //makes big, black rectangle washover
                   g.setColor(col.white);
                   g.drawString("YOU WIN!!", 200,100);
                   String out=new String("It took you "+guesses+" tries!");
                   g.drawString(out, 200,120);
                   g.drawString("Press refresh on your browser to play again", 200, 150);
                   won=true;
         public boolean destroyed(){
              if(battleshipHitCt==4 && battleOK)
                   battleOK=false;
                   return true;
              if(carrierHitCt==5 && carrierOK)
                   carrierOK=false;
                   return true;
              if(subHitCt==3 && subOK)
                   subOK=false;
                   return true;
              if(patrolHitCt==2 && patrolOK)
                   patrolOK=false;
                   return true;
              if(destroyerHitCt==3 && destroyerOK)
                   destroyerOK=false;
                   return true;
              return false;
         public boolean mouseDown(Event e, int x, int y) {//handles when a mouse key is pressed(either key)
              String type= new String("");
              if (!won){
                   message="";
                   Graphics g = getGraphics() ;
                   g.setColor(col.white);
                   int xindex, yindex, val;
                   if (x>20 && y>20 && y<300 && x<300 && init){
                        guesses++;
                        g.setColor(col.black);
                        g.fillRect(490,260, 550, 285);
                        g.setColor(col.white);
                        g.drawString("# of Guesses = " + guesses,500, 280);
                        g.setColor(col.black);
                        g.fillRect(419,30,580,95);
                        g.setColor(col.white);
                        xindex=(x-20)/28;//converts x coordinate into index(A-J) in form of (0-9)
                        yindex=(y-20)/28;//converst y coordinate into index(0-9)
                        val=guessed[xindex][yindex];
                        if (val==2){
                             if (seeifahit(xindex,yindex)){
                                  type=getshiptype(xindex, yindex);
                                  hits++;
                                  g.setColor(col.white);
                                  guessed[xindex][yindex]=1;
                                  if (!destroyed()){
                                       message=type + " Hit";
                                       g.drawString(message, 420, 40);
                                  else{
                                       g.setColor(col.white);
                                       message2[numDestroyed]=new String("");
                                       message2[numDestroyed]=type + "Destroyed";
                                       numDestroyed++;
                                       g.drawString(message2[numDestroyed-1] , 305, 40+(numDestroyed)*20);
                                  g.setColor(col.red);
                             else guessed[xindex][yindex]=0;
                             g.fillOval(xindex*28+30, yindex*28+30, 10,10);
    else {
                             g.setColor(col.white);
                             message="That has already been guessed";
                             g.drawString(message,420,40);
                   if (x>20 && x<40 && y>20 && y<40 && !init){
                        init=true;
                        paint(g);
                   if (hits>=17){
                        gameOver();
                        System.exit(0);
              return true;

    replace following in main method
    applet.paint(g); by
    repaint(); and
    applet.start() by
    // applet.start() at least compile your source code and if all runs the normal way it shoul be an application
    PS: i think there is a way in javac to tell it your source is an applicat. and not an applet

  • Converting binary data into pdf and placing into application server

    Hi Friends,
    I am able to get PO details in binary format and then using GUI_DOWNLOAD  with file type with 'bin' and file name with 'sample.pdf' extension , got  PO in pdf  format.
    But i need to get with pdf extension in application server without using GUI_DOWNLOAD.
    Is there any functional modules for it?
    With Warm Regards,
    Madhu!!!

    Hi Madhu,
    Check this code.
    *& Report  ZSPOOLTOPDF                                                 *
    *& Converts spool request into PDF document and emails it to           *
    *& recipicant.                                                         *
    *& Execution                                                           *
    *& This program must be run as a background job in-order for the write *
    *& commands to create a Spool request rather than be displayed on      *
    *& screen                                                              *
    REPORT  zspooltopdf.
    PARAMETER: p_email1 LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_sender LIKE somlreci1-receiver
                                        DEFAULT '[email protected]',
               p_delspl  AS CHECKBOX.
    *DATA DECLARATION
    DATA: gd_recsize TYPE i.
    Spool IDs
    TYPES: BEGIN OF t_tbtcp.
            INCLUDE STRUCTURE tbtcp.
    TYPES: END OF t_tbtcp.
    DATA: it_tbtcp TYPE STANDARD TABLE OF t_tbtcp INITIAL SIZE 0,
          wa_tbtcp TYPE t_tbtcp.
    Job Runtime Parameters
    DATA: gd_eventid LIKE tbtcm-eventid,
          gd_eventparm LIKE tbtcm-eventparm,
          gd_external_program_active LIKE tbtcm-xpgactive,
          gd_jobcount LIKE tbtcm-jobcount,
          gd_jobname LIKE tbtcm-jobname,
          gd_stepcount LIKE tbtcm-stepcount,
          gd_error    TYPE sy-subrc,
          gd_reciever TYPE sy-subrc.
    DATA:  w_recsize TYPE i.
    DATA: gd_subject   LIKE sodocchgi1-obj_descr,
          it_mess_bod LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          it_mess_att LIKE solisti1 OCCURS 0 WITH HEADER LINE,
          gd_sender_type     LIKE soextreci1-adr_typ,
          gd_attachment_desc TYPE so_obj_nam,
          gd_attachment_name TYPE so_obj_des.
    Spool to PDF conversions
    DATA: gd_spool_nr LIKE tsp01-rqident,
          gd_destination LIKE rlgrap-filename,
          gd_bytecount LIKE tst01-dsize,
          gd_buffer TYPE string.
    Binary store for PDF
    DATA: BEGIN OF it_pdf_output OCCURS 0.
            INCLUDE STRUCTURE tline.
    DATA: END OF it_pdf_output.
    CONSTANTS: c_dev LIKE  sy-sysid VALUE 'DEV',
               c_no(1)     TYPE c   VALUE ' ',
               c_device(4) TYPE c   VALUE 'LOCL'.
    *START-OF-SELECTION.
    START-OF-SELECTION.
    Write statement to represent report output. Spool request is created
    if write statement is executed in background. This could also be an
    ALV grid which would be converted to PDF without any extra effort
      WRITE 'Hello World'.
      new-page.
      commit work.
      new-page print off.
      IF sy-batch EQ 'X'.
        PERFORM get_job_details.
        PERFORM obtain_spool_id.
    Alternative way could be to submit another program and store spool
    id into memory, will be stored in sy-spono.
    *submit ZSPOOLTOPDF2
           to sap-spool
           spool parameters   %_print
           archive parameters %_print
           without spool dynpro
           and return.
    Get spool id from program called above
    IMPORT w_spool_nr FROM MEMORY ID 'SPOOLTOPDF'.
        PERFORM convert_spool_to_pdf.
        PERFORM process_email.
        if p_delspl EQ 'X'.
          PERFORM delete_spool.
        endif.
        IF sy-sysid = c_dev.
          wait up to 5 seconds.
          SUBMIT rsconn01 WITH mode   = 'INT'
                          WITH output = 'X'
                          AND RETURN.
        ENDIF.
      ELSE.
        SKIP.
        WRITE:/ 'Program must be executed in background in-order for spool',
                'request to be created.'.
      ENDIF.
          FORM obtain_spool_id                                          *
    FORM obtain_spool_id.
      CHECK NOT ( gd_jobname IS INITIAL ).
      CHECK NOT ( gd_jobcount IS INITIAL ).
      SELECT * FROM  tbtcp
                     INTO TABLE it_tbtcp
                     WHERE      jobname     = gd_jobname
                     AND        jobcount    = gd_jobcount
                     AND        stepcount   = gd_stepcount
                     AND        listident   <> '0000000000'
                     ORDER BY   jobname
                                jobcount
                                stepcount.
      READ TABLE it_tbtcp INTO wa_tbtcp INDEX 1.
      IF sy-subrc = 0.
        message s004(zdd) with gd_spool_nr.
        gd_spool_nr = wa_tbtcp-listident.
        MESSAGE s004(zdd) WITH gd_spool_nr.
      ELSE.
        MESSAGE s005(zdd).
      ENDIF.
    ENDFORM.
          FORM get_job_details                                          *
    FORM get_job_details.
    Get current job details
      CALL FUNCTION 'GET_JOB_RUNTIME_INFO'
           IMPORTING
                eventid                 = gd_eventid
                eventparm               = gd_eventparm
                external_program_active = gd_external_program_active
                jobcount                = gd_jobcount
                jobname                 = gd_jobname
                stepcount               = gd_stepcount
           EXCEPTIONS
                no_runtime_info         = 1
                OTHERS                  = 2.
    ENDFORM.
          FORM convert_spool_to_pdf                                     *
    FORM convert_spool_to_pdf.
      CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
           EXPORTING
                src_spoolid              = gd_spool_nr
                no_dialog                = c_no
                dst_device               = c_device
           IMPORTING
                pdf_bytecount            = gd_bytecount
           TABLES
                pdf                      = it_pdf_output
           EXCEPTIONS
                err_no_abap_spooljob     = 1
                err_no_spooljob          = 2
                err_no_permission        = 3
                err_conv_not_possible    = 4
                err_bad_destdevice       = 5
                user_cancelled           = 6
                err_spoolerror           = 7
                err_temseerror           = 8
                err_btcjob_open_failed   = 9
                err_btcjob_submit_failed = 10
                err_btcjob_close_failed  = 11
                OTHERS                   = 12.
      CHECK sy-subrc = 0.
    Transfer the 132-long strings to 255-long strings
      LOOP AT it_pdf_output.
        TRANSLATE it_pdf_output USING ' ~'.
        CONCATENATE gd_buffer it_pdf_output INTO gd_buffer.
      ENDLOOP.
      TRANSLATE gd_buffer USING '~ '.
      DO.
        it_mess_att = gd_buffer.
        APPEND it_mess_att.
        SHIFT gd_buffer LEFT BY 255 PLACES.
        IF gd_buffer IS INITIAL.
          EXIT.
        ENDIF.
      ENDDO.
    ENDFORM.
          FORM process_email                                            *
    FORM process_email.
      DESCRIBE TABLE it_mess_att LINES gd_recsize.
      CHECK gd_recsize > 0.
      PERFORM send_email USING p_email1.
    perform send_email using p_email2.
    ENDFORM.
          FORM send_email                                               *
    -->  p_email                                                       *
    FORM send_email USING p_email.
      CHECK NOT ( p_email IS INITIAL ).
      REFRESH it_mess_bod.
    Default subject matter
      gd_subject         = 'Subject'.
      gd_attachment_desc = 'Attachname'.
    CONCATENATE 'attach_name' ' ' INTO gd_attachment_name.
      it_mess_bod        = 'Message Body text, line 1'.
      APPEND it_mess_bod.
      it_mess_bod        = 'Message Body text, line 2...'.
      APPEND it_mess_bod.
    If no sender specified - default blank
      IF p_sender EQ space.
        gd_sender_type  = space.
      ELSE.
        gd_sender_type  = 'INT'.
      ENDIF.
    Send file by email as .xls speadsheet
      PERFORM send_file_as_email_attachment
                                   tables it_mess_bod
                                          it_mess_att
                                    using p_email
                                          'Example .xls documnet attachment'
                                          'PDF'
                                          gd_attachment_name
                                          gd_attachment_desc
                                          p_sender
                                          gd_sender_type
                                 changing gd_error
                                          gd_reciever.
    ENDFORM.
          FORM delete_spool                                             *
    FORM delete_spool.
      DATA: ld_spool_nr TYPE tsp01_sp0r-rqid_char.
      ld_spool_nr = gd_spool_nr.
      CHECK p_delspl <> c_no.
      CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'
           EXPORTING
                spoolid = ld_spool_nr.
    ENDFORM.
    *&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT
          Send email
    FORM send_file_as_email_attachment tables it_message
                                              it_attach
                                        using p_email
                                              p_mtitle
                                              p_format
                                              p_filename
                                              p_attdescription
                                              p_sender_address
                                              p_sender_addres_type
                                     changing p_error
                                              p_reciever.
      DATA: ld_error    TYPE sy-subrc,
            ld_reciever TYPE sy-subrc,
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ,
            ld_receiver LIKE  sy-subrc.
    data:   t_packing_list like sopcklsti1 occurs 0 with header line,
            t_contents like solisti1 occurs 0 with header line,
            t_receivers like somlreci1 occurs 0 with header line,
            t_attachment like solisti1 occurs 0 with header line,
            t_object_header like solisti1 occurs 0 with header line,
            w_cnt type i,
            w_sent_all(1) type c,
            w_doc_data like sodocchgi1.
      ld_email   = p_email.
      ld_mtitle = p_mtitle.
      ld_format              = p_format.
      ld_attdescription      = p_attdescription.
      ld_attfilename         = p_filename.
      ld_sender_address      = p_sender_address.
      ld_sender_address_type = p_sender_addres_type.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
         ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      CLEAR t_attachment.
      REFRESH t_attachment.
      t_attachment[] = it_attach[].
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data              = w_doc_data
                put_in_outbox              = 'X'
                sender_address             = ld_sender_address
                sender_address_type        = ld_sender_address_type
                commit_work                = 'X'
           IMPORTING
                sent_to_all                = w_sent_all
           TABLES
                packing_list               = t_packing_list
                contents_bin               = t_attachment
                contents_txt               = it_message
                receivers                  = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
    Populate zerror return code
      ld_error = sy-subrc.
    Populate zreceiver return code
      LOOP AT t_receivers.
        ld_receiver = t_receivers-retrn_code.
      ENDLOOP.
    ENDFORM.
    Hope this resolves your query.
    <b>Reward all the helpful answers.</b>
    Regards

  • HELP! How to get an applet and place it into an application?

    Hi,
    We have a third party java applet that runs on a specific server. We don't have the code for this applet, only the .class file. We usually connect to the server using any browser with HTTP protocole like http://ourServer. Then we are asked for our username and password and then the applet loads and we can run it. The applet is design to remotely control a piece of equipment. The applet runs on the server and directly coomunicate with this piece of equipment and gives us bak some information into a graphic interface.
    What we want to do is to integrate the applet into one of our stand alone application to eliminte the need for a browser. Since Applet can be add directly into any Panel I've tried something like :
    public myApp() {
         Container c = getContentPane();
         ThirdPartyApplet myApplet = new ThirdPartyApplet();
         c.setLayout(new BorderLayout());     
         c.add(myApplet,BorderLayout.CENTER);
         myApplet.init();
    Of course I've a local copy of the .class file and I've included it into my ClassPath. I can get the interface this way but I can't run it, nothing seems to work.
    I'm not an expert in applet, I don't know how this one works, but it seems that we need to get the one on the server and run it, just as a browser would do. We've also tried to integrate a Browser into our app. We've tried NetClue and IceBrowser but only IceBrowser seems to work perfectly with our applet and we don't have the money for an IceBrowser license.
    So what is wrong with the integration of an applet into a stand alon application?? How do I simulate a Browser and get the applet from the server?
    Can anyone help me on this one?
    Thanks
    Steeves

    There's a link to download the Java source on this page.
    http://java.sun.com/j2se/downloads.html
    Once you have it, look for the appletviewer source in
    src\share\classes\sun\applet

  • How to develope application for converting excel data into oracle database

    I am very new to the oracle world. I want to develop application for converting excel sheet into oracle database using oracle forms. I have basic knowldge of oracle but i am totally new to the forms. Can anybody tel me step by step procedure to do this task? Please help me out in this problem.
    Thanx in advance.

    Hello,
    just do a "Search" in this forum with words "excell to oracle"... and you could find lot of posts about that, i.e.:
    Re: How to load excel-csv file into oracle database
    Jose L

  • Keylistener breaks when implementing applet into application

    I am currently trying to imbed my "Game" into an application to make a game menu for it. However, when
    i try and do this the game loads fine but my keylistener doesnt work.
    I am using the code.
    import java.awt.*;
    import java.applet.*;
    public class RunApplets_BROKEN
    public static void main (String [] args)
    Applet myApplet = new Bomberman_Version_Aplha_EDITABLE (); // define applet of interest
    Frame myFrame = new Frame ("Applet Holder"); // create frame with title
    // Call applet's init method
    myApplet.init ();
    // add applet to the frame
    myFrame.add (myApplet, BorderLayout.CENTER);
    myFrame.setSize (500, 600);
    myFrame.setVisible (true); // usual step to make frame visible
    } // end main
    } // end class
    I know this is bad programming and i am trying to keep it simple, however when i do this to my other program it works fine. So i dont understand. Could anyone please help?

    Intentional multi-post
    [http://forums.sun.com/thread.jspa?threadID=5360722]
    You were given two answers yesterday. Don't start a new thread because you didn't like them, that just wastes peoples time.

  • How to integrate applet into web dynpro java application

    Hello Exprt,
    I am struggling with integrating applet into WD applciation. I don't see any applet specific UI element. I would highly appreciate your help.
    Thanks,
    Shubhangi

    Satyajit Chakra...
    Please can you clarify what you mean that it has been deprecated?
    We have a similar requirement and I have tested a method to do this on our NW 04 system that worked.  But I really need to know what to plan for when we upgrade to 04s.
    I am not sure if this is the right approach, but here's how I did it on our 04 system....I need to know if the approach I have taken below will work properly in 04s.
    I built an HTML file in a string which contains javascript to launch the IXOS viewer applet...which is the "inString" below...
              try
                   String html = inString;
                   IWDCachedWebResource resource = WDWebResource.getWebResource(inString.getBytes("UTF-8"), WDWebResourceType.HTML);
                   resource.setResourceName("HTML_inline.html");
                   resource.setAttachement(false);
                   resource.setReadOnce(false);
                   wdContext.currentContextElement().setOut(resource.getAbsoluteURL());
              catch (final Exception ex)
                   wdComponentAPI.getMessageManager().reportException(new WDNonFatalException(ex), false);
              IWDWindowInfo windowInfo = wdComponentAPI.getComponentInfo().findInWindows("PopupImageViewer");
              IWDWindow window = wdComponentAPI.getWindowManager().createWindow(windowInfo, true);
              window.setTitle("Image opening in separate window");
              window.setWindowPosition(25, 225);
              window.open();
              wdContext.currentPopupElement().setWindowInstance(window);

  • How to convert word doc into pdf - which product of adobe i need to use- what upgrades - am a newbie

    How to convert word doc into pdf - which product of adobe i need to use- what upgrades - am a newbie -  simple answers please - Thanks in advance.

    @Pipeline2007 - which version of Microsoft Office have you got? Older versions of Acrobat aren't compatible with the latest versions of Office, see this link for info:
    http://helpx.adobe.com/acrobat/kb/compatible-web-browsers-pdfmaker-applications.html

  • How to load a java card applet into a java card

    Dear All,
    I am a novice to java card technology..
    I have done some search on how to load a java card applet into a smart card but haven't found a satisfactory answer. I have read about installer.jar and scriptgen tool but I want to load the applet from a java program and not from command line. It would be of great help if somebody can help me out.
    If somebody can share a sample program which load a javacard applet(.CAP file) into a smart card, I will be very thankful.
    I am able to find some client applications which help us send APDU commands and recieve response APDU's to interact with an applet loaded on to the smart card but not application which actually load the applet.
    I have heard of OCF and GP.. some say that OCF technology is outdated and no longer in use.. can somebosy throw some light on this too..
    cheers,
    ganesh

    hi siavash,
    thanks for the quick response.. i checked out GPShell as suggested, it looked like a tool by which one can load an applet on to card and send some sample apdu commands... but I want to load the applet from the code.
    My application should look something like this.. it will be a swing applicaton where I have a drop down with a list of readers, I select the one desired and then click on "LOAD" after inserting a blank java card, at this point my applet which is stored in my DB should get loaded on to the java card. The next step should be to personalize it where I enter the values for the static variables of my applet and click "PERSONALIZE", at this point all these values should be embedded into APDU commands and sent to the java card for processing.
    For achieving this I am yet to find a comprehensive sample or documentation on the net.
    Please help...
    regards,
    ganesh

  • Acrobat XI Pro successfully installed, but it failed in converting word files into PDF, why?

    I just installed Adobe XI Pro through the download assistant, it looks the installation went well, but when I tried to convert word files into PDF (tried many times), it failed. Anyone has the same problems, any solutions?

    Please reply with more information - what your operating system is, do you have Office installed, and what exactly is happening. Is there an error message, does the application crash, and from where are you starting the conversion (using Word and PDFMaker, using Acrobat's Create button, or batch processing).

  • Adobe Product API for converting mulptiple formats into PDF and to Embed PDF into PDF ?

    Hi Team,
    Is there any adobe product that allow us to convert multiple formats into .pdf format and also allow us to attach (embed) other pdf files object into a pdf, is there any .net API for that, I want to do this through programming.
    Regards
    Amit

    We want to use this product for our application, for the purpose of converting different files formats into a PDF file and also for attaching files into a single PDF using a web application and windows service. I have to evaluate some features and point regarding this product which are as below:
    1. PDF form creation in future requirement.
    2. Maximum files size that i can convert into PDF.
    3. Memory management when converting N number of files.
    4. Compatibility with C#, .Net Framework 4.0, using MS Visual Studio 2010.
    5. Support of the product for future.
    6. Primary requirement to use PDFLiveCyle for above features.
    7. Basic guidelines before using PDFLiveCyle.
    8. Ease of coding using PDFLiveCyle.
    9. 32bit or 64bit support.
    10. Lisencing information
    Regards
    Amit Mishra

  • Can u convert a video into just audio?

    can u convert a video into just audio so i can play it on my nano

    Hi,
    thanks Stefan Maric and wew64.
    in the RTPSocketAdapter.java of the 'Implementing Custom Data Sources and Media Handlers' example I can take the groups of bytes previous to they where send for UDP.
    My Idea its take this bytes, make groups of 259 bytes and send them over the ISDN. In the Clients side recover this information and make groups with the original size (that I must send with the video information over my ISDN connection) and send them with UDP to the same host and receive with a regular JMF application.
    I am not sure if I will have problems with the synchronize of the video and audio doing this process, any idea??
    Thanks a lot
    Ana Cristina

Maybe you are looking for