日期:2014-05-20  浏览次数:20771 次

求看下我这个程序怎不不显示,所画的图呢
package object;
import java.awt.Color;
import javax.swing.*;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class pain12 extends Thread {
static int []array=new int[]{80, 110, 130, 190, 175, 150, 140, 110, 220, 100, 70, 185};
    static int n=12;
    static JPanel pan = new JPanel();
    static JFrame frm = new JFrame();
public void main(String[]args)
{
frm.setSize(300,250);
frm.add(pan);
pan.setBounds(100,100,300,250);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
public void paintComponent(Graphics g)
{
pan.paintComponents(g);
g.setColor(Color.red);
g.drawRect(500,(480-array[0]),20,array[0]);
g.drawRect(520,(480-array[1]),20,array[1]);
g.drawRect(540,(480-array[2]),20,array[2]);
g.drawRect(560,(480-array[3]),20,array[3]);
g.drawRect(580,(480-array[4]),20,array[4]);
g.drawRect(600,(480-array[5]),20,array[5]);
g.drawRect(620,(480-array[6]),20,array[6]);
g.drawRect(640,(480-array[7]),20,array[7]);
g.drawRect(660,(480-array[8]),20,array[8]);
g.drawRect(680,(480-array[9]),20,array[9]);
g.drawRect(700,(480-array[10]),20,array[10]);
g.drawRect(720,(480-array[11]),20,array[11]);
}
}

------解决方案--------------------
你的paintComponent什么情况下执行?现在应该是没有执行
另外,若是执行的话,g是哪个的?也就是说你画的东西是画在哪个上面的,pan?
------解决方案--------------------
首先,你连main函数都写错了;其次,你没明白重绘的意思;
如:你想重绘个panel

public class MyPanel extends JPanel{  
      private Color color=Color.black;
      private boolean show=true;
      public void paintComponent(Graphics g){
             super.paintComponent(g);
             if(show){
                    g.setColo(color); 
                     g.fillOval(0, 0,20, 20);
                     }  
              } }

然后你的Panel应该继承MyPanel
------解决方案--------------------
这是啥程序 ? main方法不是静态的,这段代码能运行么?

1. main方法不是程序的入口函数;
2. 基础Thread类,没有重写run方法,不知道这个继承有什么作用;
3. paintComponent方法,通常是JComponent类下面的方法,
    楼主写在一个非JComponent家族类中,是无法重写父类同名方法的,因为父类没这方法;
4. paintComponent是一个托管调用的方法,就是说,这个方法是UI绘制线程来调用的,
    楼主pan.paintComponents(g);的使用手法,我有点纠结,因为paint方法会绘制子对象的图形
    我想LZ还是多理解一下基础知识比较好。
------解决方案--------------------
package com.example.learnjava.Common;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;