Satish, I see that your code is NOT overriding the paintComponent, but the paint 
method.

Make sure the paintComponent method looks like this:

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    ..... // whatever you want to do
}

The call to super.paintComponent(g) is necessary to let the UI delegate to paint.  This
would let it paint cleanly.

Hope this helps.
Ngan
Satish Annapureddy wrote:

> Hi,
>
> I am new to Java2D and am wondering if there are any
> issues with using Graphics2D with Swing  components.
>
> In the example code attached below,
> I have a JPanel whose paintComponent() method is overridden
> to use Graphics2D  to just draw a rectangle and a piece of text.
> When the window gets obscured and then exposed, I see some artifacts.
>
> However, if I use AWT Canvas instead of JPanel, the repainting works
> as expected.
>
> Also, I noticed that the Java2D demos override paint() method
> on DemoSurface
> which is a subclass of JPanel. Shouldn't they be overriding
> paintComponent()
> instead?
>
> I am using Blackdown's Linux port for Java version: 1.2 on Intel
> platform.
>
> Thanks,
> Satish.
>
>   ------------------------------------------------------------------------
> import java.awt.*;
> import javax.swing.*;
> import java.awt.event.*;
> import java.awt.geom.*;
>
> public class Test2D extends JFrame {
>     public Test2D() {
>         JPanel panel = new DrawPanel();
>         getContentPane().add(panel);
>
> //      Canvas panel = new DrawPanel();
> //      getContentPane().add(panel);
>
>         pack();
>         setVisible(true);
>     }
>     public static void main( String[] args ) {
>         Test2D test = new Test2D();
>     }
> }
>
> // class DrawPanel extends Canvas {
> //     public void paint(Graphics g) {
> class DrawPanel extends JPanel {
>     public void paint(Graphics g) {
>         Graphics2D g2d = (Graphics2D)g;
>         g2d.setBackground(Color.blue);
>         g2d.setColor(Color.white);
>         g2d.clearRect(0, 0, getWidth(), getHeight());
>         g2d.setTransform(new AffineTransform());
>         Rectangle2D rect = new Rectangle2D.Float(0, 0, getWidth()/2, getHeight()/2);
>         g2d.fill(rect);
>         g2d.drawString("Test2D", getWidth()/2, getHeight()/2);
>     }
>     public Dimension getPreferredSize() {
>         return new Dimension(100, 100);
>     }
> }

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to