I am starting to learn Java a little after long time. And learning Netbeans 7.0.
I just want to make sure I am doing this ok.
I basically need to make an applet, but not having it AWT based, but instead Swing based.
So I need to extend JApplet, not Applet. I understand in swing draws on a Jpanel instead of awt canvas (or Panel). And so I read on a web site that one needs to override PaintComponent() instead of overrriding paint() as the case with awt applet?
I need to make a very simple applet, say with one button, when I click on it, I want to draw a graphics, say a line or circle, and have the output go to an area below the button.
This is what I did
- File->New Project
- Select Java and from Projects, select “Java Application”
- make sure to Un-check the “create Main class”, and click Finish
- File->New file
- Select “Swing GUI Forms” from under the catagories panel
- From the “File types”, Select Japplet Form,Next and Finish
- From the palette, from Swing Controls, select Button and lay it on the from
- Now the tricky part. I need an area to draw on, right? So I from palette, I select, from Swing containers, a “Panel”, and lay it on the form, resize it as needed. Do, now I have this:

Am I on the right track so far? Now I open the source file, and I see the init() method.
Now is where I need little help. Not sure what the code I need to insert to just draw a line to the JPanel I just added. I know I need to insert it here:

I tried the “insert Code” feature, and select override, but do not see PaintComponent()?
I know how to do it in swt applet, just add a paint(Graphics g) method. But when I do this, the graphics do not draw inside the Jpanel area. Basically, how do I tell it to draw something to a specific JPanel area?
If someone just tell me what code I need to insert there to draw a line or any graphics2D object to display on that JPanel I added below the bottom, that will great.
thanks,
–Nasser
EDIT 1:
Just a clarrification: If I add this function to paint on the Jpanel:
public void paint(Graphics g)
{
super.paint(g);
g.drawString(….);
}
Then the output does show ok, but it over the main Japnel. And can hide the button and any other UI components are there.
I need the paint output to go to a specific Jpanel which I added earlier below the button. To this one
private javax.swing.JPanel jPanel1;
So, my question is, how to draw/paint to the above object and not to the main Jpanel?
EDIT 2:
I tried just to change the JPanel background color, and it is not working. Here is the code.
I also tried JpanelForm instead of JApplet Form. Can one use JFrame form to make an applet? Since that requires a main() it does not seem possible.
import javax.swing.*;
import java.awt.*;
import java.awt.Graphics;
public class NewJApplet extends javax.swing.JApplet
{
/** Initializes the applet NewJApplet */
public void init()
{
jPanel1 = new JPanel();
try
{
java.awt.EventQueue.invokeAndWait(new Runnable()
{
public void run()
{
initComponents();
}
});
} catch (Exception ex)
{
ex.printStackTrace();
}
}
private void initComponents() {...}
//--------- ADDED THIS
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
Rectangle rect=new Rectangle(4,4);
jPanel1.setBackground(Color.RED);
}
//---------------
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JPanel jPanel1;
// End of variables declaration
}
netbeans does not support making JApplets, only applets. Use standard text editor to design the JApplet interface then compile the source code using javac.