换成   public void paint(Graphics g)
   {
   super.paint(g);就不会了,不过我也不知道是什么原因,为什么不可以用paintComponent(g);

解决方案 »

  1.   

    public void paintComponent(Graphics g)
       {
       super.paintComponents(g);///这里写错了应该是
       public void paintComponent(Graphics g)
       {
       super.paintComponent(g);//没有"s"的
      

  2.   

    reprint() {
        paintComponent(Graphics g);
    }思路这样
      

  3.   

    public void paintComponent(Graphics g)
       {
           super.paintComponent(g);
       }
      

  4.   

    reprint() {
        paintComponent(Graphics g);
    }思路这样
    我编译了一下g那里报错
      

  5.   

    public void paintComponent(Graphics g)
       {
           super.paintComponent(g);
       }
    父类的!父类的!
      

  6.   

    报错是这样的D:\Personal_Poject\javaProject\LC\yearLine.java:119: ')' expected
         paintComponent(Graphics g)
                                    ^
    D:\Personal_Poject\javaProject\LC\yearLine.java:123: ';' expected
        
    ^
    2 errorsProcess completed.
      

  7.   

    你为什么不调用repaint();
    JFrame上画图要调用这个方法,因为任何覆盖会破坏ContentPane层的
      

  8.   

    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;
    import org.jdom.*;
    import org.jdom.output.*;
    import org.jdom.input.*;
    import java.io.*; 
    import java.util.List;
    import javax.swing.border.*;
    import java.applet.*;public class yearLine extends javax.swing.JPanel
    {
    public yearLine(String aYear1) {
            aYear = aYear1;
            aYear = "a2003";
            initComponents();
            
        }
        
        private void initComponents() {
      
       }
      
       public void paintComponent(Graphics g)
       {
       super.paintComponent(g);
       g.drawLine(50,450,550,450);
       g.drawLine(50,20,50,450);
      
       Polygon p10 = new Polygon();
       p10.addPoint(45,20);
       p10.addPoint(55,20);
       p10.addPoint(50,15);
       g.drawPolygon(p10);
      
       Polygon p11 = new Polygon();
       p11.addPoint(550,445);
       p11.addPoint(550,455);
       p11.addPoint(555,450);
       g.drawPolygon(p11);
       try
    {
    SAXBuilder sb = new SAXBuilder(); 
         Document doc = sb.build(new FileInputStream("xxx.xml"));
         Element root = doc.getRootElement();
      
       if(!Const.findElement(root.getChild("income"),aYear))
       {
       g.setColor(Color.red);
       g.drawString("(选择的年没数据)",250,250);
       g.setColor(Color.black);
       }
       else
       {
       int big = 0;
       int[] gx = new int[12];
       int[] gy = new int[12];
       int total = 0;
      
       for(int i=1;i<=12;i++)
       {
       if(Const.findElement(root.getChild("income").
       getChild(aYear),"a"+i))
       {
       for(int r=0;r<root.getChild("income").
       getChild(aYear).getChild("a"+i).getChildren().size();r++)
       {
       System.out.println("这个月数据为");
       total = total+Integer.parseInt(((Element)root.getChild("income").
       getChild(aYear).getChild("a"+i).getChildren().get(r)).getAttributeValue("num"));
       }
      
       if(big < total)
       {
       big = total;
       }
      
       System.out.println("这个月数据为"+total);
       }
       else
       {
       System.out.println("这个月数据为0");
       total = 0;
       }
      
       g.drawLine(50+i*40,445,50+i*40,450);
       g.drawString(""+i,50+i*40-4,465);
      
       gx[i-1] = (50+i*40);
       gy[i-1] = 450-(int)(total*0.08);
       if (gy[i-1]==0)
       {
       gy[i-1] = 450;
       }
      
       }
      
       for(int h=1;h<=10;h++)
       {
       g.drawLine(50,450-(int)(500*h*0.08),55,450-(int)(500*h*0.08));
       g.drawString(""+500*h,15,450-(int)(500*h*0.08)+5);
       }
      
       for(int j=0;j<12;j++)
       {
       if(j==11)
       {
      
       }
       else
       {
       System.out.println(gy[j]);
       g.drawLine(gx[j],gy[j],gx[j+1],gy[j+1]);
       }
       }
       }
      
       }
    catch(Exception e1)
            {
             System.out.println(e1);
         }

       g.drawString("(月)",555,465);
       }
            
       public static void main(String args[])
       {
       yearLine yl = new yearLine("2003");
       yl.setSize(600,500);
       JFrame jf = new JFrame();
       jf.setSize(600,500);
       jf.getContentPane().add(yl);
       jf.validate();
       jf.show();
       }
      
       private String aYear;}代码如此,请问如何改进
      

  9.   

    还有如何能让画的斜线变的平滑
    // enable anti-aliasing to smooth jagged lines
          g2D.setRenderingHint( RenderingHints.KEY_ANTIALIASING, 
             RenderingHints.VALUE_ANTIALIAS_ON );
          
          // enable high-quality rendering in Graphics2D object
          g2D.setRenderingHint( RenderingHints.KEY_RENDERING, 
             RenderingHints.VALUE_RENDER_QUALITY );
      

  10.   

    Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, 
             RenderingHints.VALUE_ANTIALIAS_ON );
              g2d.setRenderingHint( RenderingHints.KEY_RENDERING, 
              RenderingHints.VALUE_RENDER_QUALITY );问题解决,谢谢各位
      

  11.   

    现在不会发生花掉,但是原来画的东西,离开界面一次,就少一次,不知道为什么
    我从前听别人说过,要重载某一个方法,但是忘了具体那个方法
    public void update(Graphics g){
        paint(g);
    }
    This method was overridden to prevent an unnecessary call to clear the background