请问为什么下面的程序画不出来矩形呢?import java.util.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*; 
import java.awt.event.*;
import javax.swing.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;public class Try extends JFrame {
Frame f1;
Canvas cvs;
Graphics gf;
public Try() {
cvs = new Canvas();
cvs.setSize(200,200);
this.getContentPane().add(cvs,BorderLayout.CENTER);
this.pack();gf = cvs.getGraphics();
gf.setColor(Color.WHITE);
gf.fillRect(0,0, 100,100);
gf.setColor(Color.BLUE);
gf.fillRect(0,0, 50,50);
}
    public static void main(String[] args) {
        JFrame dd= new Try();
        dd.setSize(300,300);
        dd.setVisible(true);
    }

}

解决方案 »

  1.   

    另一个类似的程序,也是得不到图画。import java.util.*;
    import java.applet.*;
    import java.awt.event.*;
    import java.awt.*;
    import java.awt.image.*; 
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.awt.Graphics;
    import java.awt.Color;public class Try extends JFrame {
    Frame f1;
    Canvas cvs;
    Graphics gf;
    public Try() {
    cvs = new Canvas();
    cvs.setSize(200,200);
    this.getContentPane().add(cvs,BorderLayout.CENTER);
    this.pack();
    cvs.setBackground(Color.BLACK);
    gf = cvs.getGraphics();
    gf.setColor(Color.yellow);
    Image ig = createImage(this.getSize().width, this.getSize().height);
    Graphics gh = ig.getGraphics();
    gh.fillRect(0,0,100,100);
    gh.setColor(Color.BLUE);
    gh.fillRect(0,0,50,50);
    cvs.getGraphics().drawImage(ig,0,0,this);
    }
        public static void main(String[] args) {
            JFrame dd= new Try();
            dd.setSize(300,300);
            dd.setVisible(true);
        }

    }
      

  2.   

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.Rectangle2D;
    /**
     * Displays a JFrame and draws a ractangle on it using the Java 2D Graphics API
     *
     * @author www.javadb.com
     */
    public class Java2DFrame extends javax.swing.JFrame {
        
        /**
         * Creates a new instance of Java2DFrame
         */
        public Java2DFrame() {
            initComponents();
        }
        
        /**
         * This is the method where the rectangle is drawn.
         *
         * @param g The graphics object
         */
        public void paint(Graphics g) {
            Graphics2D graphics2 = (Graphics2D) g;
            Rectangle2D rectangle = new Rectangle2D.Float(100, 100, 240, 160);
            graphics2.draw(rectangle); 
        }
        
        // <editor-fold defaultstate="collapsed" desc=" Generated Code "> 
        private void initComponents() {        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 400, Short.MAX_VALUE)
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(0, 300, Short.MAX_VALUE)
            );
            pack();
        }// </editor-fold> 
        
        /**
         * Starts the program
         *
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Java2DFrame().setVisible(true);
                }
            });
        }
    }
      

  3.   

      /**
       * This is the method where the rectangle is drawn.
       *
       * @param g The graphics object
       */
       public void paint(Graphics g) {
       Graphics2D graphics2 = (Graphics2D) g;
       Rectangle2D rectangle = new Rectangle2D.Float(100, 100, 240, 160);
       graphics2.draw(rectangle);  
      }