import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;import javax.swing.JFrame;
import javax.swing.JPanel;public class ImgPanel1 extends JPanel
{
    private Image img = Toolkit.getDefaultToolkit().getImage(ImgPanel1.class.getResource("test.jpg"));    public ImgPanel1()
    {
        MediaTracker tracker = new MediaTracker(this);
        tracker.addImage(img, 0);
        try
        {
            tracker.waitForID(0);
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }    public void paint(Graphics g)
    {
        super.paint(g);
        g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
    }    public static void main(String[] args)
    {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ImgPanel1 info = new ImgPanel1();
        f.getContentPane().add(info);
        f.setSize(320, 240);
        f.setLocation(240, 180);
        f.setVisible(true);
    }
}

解决方案 »

  1.   

    源自 javaalmanac.compublic void paint(Graphics g) {
            int x = 0, y = 0, w = 100, h = 100, arcWidth = 30, arcHeight = 60;
            Graphics2D g2d = (Graphics2D)g;
            g2d.drawLine(x1, y1, x2, y2);
            g2d.drawOval(x, y, w, h);
            g2d.drawRect(x, y, w, h);
    // A start angle of 0 represents a 3 o'clock position, 90 represents a 12 o'clock position,
    // and -90 (or 270) represents a 6 o'clock position
            int startAngle = 45;
            int arcAngle = -60;
            g2d.drawArc(x, y, w, h, startAngle, arcAngle);
            g2d.drawRoundRect(x, y, w, h, arcWidth, arcHeight);
            Polygon polygon = new Polygon();
            polygon.addPoint(x, y);
    // Add more points...
            g2d.drawPolygon(polygon);
    }
      

  2.   

    利用java2D API来画图。
    例如:
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.awt.geom.*;
    import java.awt.image.*;public class Shapes extends JFrame
         {
         public Shapes()
             {
             super( "Drawing 2D shapes" );         setSize( 425, 160 );
             show();
         }     public void paint( Graphics g )
             {
             // create 2D by casting g to Graphics2D
             Graphics2D g2d = ( Graphics2D ) g;         // draw 2D ellipse filled with a blue-yellow gradient
             g2d.setPaint( new GradientPaint( 5, 30, // x1, y1
             Color.blue, // initial Color
             35, 100, // x2, y2
             Color.yellow, // end Color
             true ) ); // cyclic
             g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) );         // draw 2D rectangle in red
             g2d.setPaint( Color.red );
             g2d.setStroke( new BasicStroke( 10.0f ) );
             g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) );         // draw 2D rounded rectangle with a buffered background
             BufferedImage buffImage = new BufferedImage( 10, 10, BufferedImage.TYPE_INT_RGB );         Graphics2D gg = buffImage.createGraphics();
             gg.setColor( Color.yellow ); // draw in yellow
             gg.fillRect( 0, 0, 10, 10 ); // draw a filled rectangle
             gg.setColor( Color.black ); // draw in black
             gg.drawRect( 1, 1, 6, 6 ); // draw a rectangle
             gg.setColor( Color.blue ); // draw in blue
             gg.fillRect( 1, 1, 3, 3 ); // draw a filled rectangle
             gg.setColor( Color.red ); // draw in red
             gg.fillRect( 4, 4, 3, 3 ); // draw a filled rectangle         // paint buffImage onto the JFrame
             g2d.setPaint( new TexturePaint( buffImage, new Rectangle( 10, 10 ) ) );
             g2d.fill( new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50 ) );         // draw 2D pie-shaped arc in white
             g2d.setPaint( Color.white );
             g2d.setStroke( new BasicStroke( 6.0f ) );
             g2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE ) );         // draw 2D lines in green and yellow
             g2d.setPaint( Color.green );
             g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) );         float dashes[] = { 10 };         g2d.setPaint( Color.yellow );
             g2d.setStroke( new BasicStroke( 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, dashes, 0 ) );
             g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) );
         }     public static void main( String args[] )
             {
             Shapes app = new Shapes();         app.addWindowListener( new WindowAdapter()
                 {
                 public void windowClosing( WindowEvent e )
                     {
                     System.exit( 0 );
                 }
             });
         }
    }