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();
}
deprecated code. Also we can't tell where your problem is without an
actual compilable code example and the actual error messages. Google SSCCE.