import java.awt.*;
import javax.swing.*;
public class DrawG extends javax.swing.JFrame {
private JPanel jpanel1;

public DrawG(){
super("Draw Graphics");
setSize(300,300);
jpanel1=new JPanel();
this.setContentPane(jpanel1);

}

public void Draw(){

java.awt.Graphics g=jpanel1.getGraphics();
g.setColor(Color.black);
g.drawLine(0,0,50,50);
g.drawLine(0,100,50,50);

}


public static void main(String s27[]){
DrawG d=new DrawG();
d.show();
d.Draw();
}
}为什么有时候可以显示两条黑线,有时候却不行?
该怎么解决?

解决方案 »

  1.   

    import java.awt.*;
    import javax.swing.*;
    public class DrawG extends JFrame {
    private DrawPanel dp;

    public DrawG(){
    super("Draw Graphics");
    dp = new DrawPanel();
    Container c = getContentPane();
    c.setLayout(new BorderLayout());
    c.add(dp,BorderLayout.CENTER);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,300);
    }


    public static void main(String s27[]){
    DrawG d=new DrawG();
    d.setVisible(true);
    }
    }class DrawPanel extends JPanel{
    public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.setColor(Color.black);
    g.drawLine(0,0,50,50);
    g.drawLine(0,100,50,50);

    }
    }
      

  2.   

    多谢!!!
    我想知道,为什么原来的JPanel直接加到JFrame中,就不能正常显示 ?
    谢谢!
      

  3.   

    public void paintComponent(Graphics g){这是在容器中画图的方法,必须要写在这里面