Re: Applet code conversion...
 
Knute Johnson ha scritto:
On 5/1/2012 12:28 AM, linus wrote:
Lew ha scritto:
linus wrote:
How an applet code code can be trasformed to an application code ?
I thought that adding a "main" would be enough .... but it is not so
easy ! Is
there an example about this my problem ?
Did you try a web search?
I found this in five minutes or less:
<http://www.johnloomis.org/cpe101/notes/SwingGUI/combined/combined.html>
FWIW, my search string was "Java combining an applet and application".
With the code
http://www.johnloomis.org/cpe101/notes/SwingGUI/combined/combined.html
I get >>
:174: width is not public in java.awt.Component; cannot be accessed from
outside package
{ width = ( w >= 0 ? w : 300 ); }
:177: height is not public in java.awt.Component; cannot be accessed
from outside package
{ height = ( h >= 0 ? h : 200 ); }
Wath have I to do ?
Many thanks .
Linus:
The code you provide does run as an application.  Just compile it and 
run it.  It is however way too complex for the task it is attempting.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test extends JPanel implements ActionListener {
    private String state = "";
    public test() {
        setPreferredSize(new Dimension(400,300));
    }
    public void actionPerformed(ActionEvent ae) {
        state = ae.getActionCommand();
        repaint();
    }
    public void paintComponent(Graphics g) {
        g.setColor(getBackground());
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(getForeground());
        if (state.equals("Line"))
            g.drawLine(0,0,getWidth(),getHeight());
        else if (state.equals("Oval"))
            g.drawOval(0,0,getWidth(),getHeight());
        else if (state.equals("Rect"))
            g.drawRect(5,5,getWidth()-10,getHeight()-10);
    }
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                test t = new test();
                JFrame f = new JFrame("test");
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                f.add(t,BorderLayout.CENTER);
                JPanel p = new JPanel();
                JButton b = new JButton("Line");
                b.addActionListener(t);
                p.add(b);
                b = new JButton("Oval");
                b.addActionListener(t);
                p.add(b);
                b = new JButton("Rect");
                b.addActionListener(t);
                p.add(b);
                f.add(p,BorderLayout.NORTH);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}
I deliberately left out the random code because I felt like it.
It should be that adding the code below to an applet code ...this will 
be  also an application ...but if java.awt.Component is used will have
the error >>>  width is not public in java.awt.Component; cannot be 
accessed from outside package .
public static void main( String args[] )
    {
       int width, height;
       if ( args.length != 2 ) {  // no command-line arguments
          width = 300;
          height = 200;
       }
       else {
          width = Integer.parseInt( args[ 0 ] );
          height = Integer.parseInt( args[ 1 ] );
       }
       // create window in which applet will execute
       JFrame applicationWindow =
          new JFrame( "An applet running as an application" );
       applicationWindow.addWindowListener(
          new WindowAdapter() {
             public void windowClosing( WindowEvent e )
             {
                System.exit( 0 );
             }
          }
       );
       // create one applet instance
       DrawShapes appletObject = new DrawShapes();
       appletObject.setWidth( width );
       appletObject.setHeight( height );
       // call applet's init and start methods
       appletObject.init();
       appletObject.start();
       // attach applet to center of window
       applicationWindow.getContentPane().add( appletObject );
       // set the window's size
       applicationWindow.setSize( width, height );
       // showing the window causes all GUI components
       // attached to the window to be painted
       applicationWindow.show();
    }