我用这个public void paint(Graphics g )写了个画图板程序,可以用鼠标在上面画任意的线,我在学校的机子上运行都是一切正常,画图板的窗体是灰色的,但是在家里的机子上运行弹出来画图板窗口就是透明得,等于是只出现了的标题栏和边框一样,窗体的内容就像把背景截了下来了一样,真是奇怪啊?怎么回事啊?

解决方案 »

  1.   

    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseMotionListener;
    import java.util.ArrayList;import javax.swing.JFrame;
    public class DrawEveryWhere extends JFrame implements MouseMotionListener,MouseListener{
    public DrawEveryWhere(){
    this.setTitle("画图板");
    this.setBounds(200,150,400,300);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.addMouseListener(this);
    this.addMouseMotionListener(this);
    this.setVisible(false);
    Container contentPane = this.getContentPane();
    contentPane.setBackground(Color.white);
    this.setVisible(true);

    }
    public static void main(String[] args) {
    new DrawEveryWhere();
    }
    int startX,startY,endX,endY;
    ArrayList <Lines> list = new ArrayList();

    public void mouseClicked(MouseEvent e) {
    // TODO 自动生成方法存根

    }
    public void mouseEntered(MouseEvent e) {
    // TODO 自动生成方法存根

    }
    public void mouseExited(MouseEvent e) {
    // TODO 自动生成方法存根

    }
    public void mousePressed(MouseEvent e) {
    this.startX = e.getX();
    this.startY = e.getY();
    }
    public void mouseReleased(MouseEvent e) {
    // TODO 自动生成方法存根

    }
    public void mouseDragged(MouseEvent e) {
    Lines line = new Lines(startX,startY,e.getX(),e.getY());
    list.add(line);
    this.startX=e.getX();
    this.startY=e.getY();

    repaint();

    }
    public void mouseMoved(MouseEvent e) {


    }


    public void paint(Graphics g ){

    for (int i=0;i<list.size();i++){
    list.get(i).drawLines(g);
    }
    }
      

  2.   


    import java.awt.Graphics;public class Lines {
    int sX,sY,eX,eY;
    public Lines(int sX,int sY,int eX,int eY){
    this.sX = sX;
    this.sY = sY;
    this.eX = eX;
    this.eY = eY;
    }

    public void drawLines(Graphics g){
    g.drawLine(sX, sY, eX, eY);
    }
    }
      

  3.   

    如果你的程序在你家里运行不是出现异常的话,那么这样的运行结果跟系统有关,跟JRE有关
    比如你在win2000和winxp下运行,明显窗体风格不同。
    你在xp下,把xp风格去掉,明显窗体风格又不同。
    1.4的jre跟1.5的,又有可能不同,等等
    总的说来,可以通过UIManager.setLookAndFeel(LookAndFeel newLookAndFeel)去设置
      

  4.   

    在paint()方法内,添加super.paint(g);