为什么在jpanel中看不到我画的东西
import javax.swing.*; import java.awt.*;
public class KK
{
public static void main(String[] args)
{
JFrame jf=new JFrame();
JPanel jp=new JPanel();
Graphics g=jp.getGraphics();
int gWidth = jp.getWidth();
int gHeight = jp.getHeight();
jf.setContentPane(jp);
jf.setSize(500,500);
jf.show();
g.setColor(Color.RED);
g.fillOval(200, 100, 100, 40);
}
}
----------------解决方案--------------------------------------------------------
[CODE]
import javax.swing.*;
import java.awt.*;
public class KK extends JPanel
{
public void paint(Graphics g)
{
g.setColor(Color.RED);
g.fillOval(200, 100, 100, 40);
}
public static void main(String[] args)
{
JFrame jf=new JFrame();
KK kk = new KK();
jf.setContentPane(kk);
jf.setSize(500,500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
}
[/CODE]
[此贴子已经被作者于2005-9-28 12:58:07编辑过]
----------------解决方案--------------------------------------------------------
你只是没有把它显示出来吧,要用setVisual(true);默认的是false.
----------------解决方案--------------------------------------------------------
汗,你没认真看程序吧?他写了show的。。。
----------------解决方案--------------------------------------------------------
show 有用么????
真正显示是用setVisual(true);吧
----------------解决方案--------------------------------------------------------
谢谢你门的回答。。我有1点不是很明白。。。你的paint方法不是静态的方法。。也不是构造方法。。 不明白为什么你在程序中不用调用这个方法他就能运行。。。还有。。。我的方法还是看不出哪里错了
----------------解决方案--------------------------------------------------------
wuguohua_1, 你的问题问得好,你的问题问到了paint 函数的本质,你是不是知道,repaint() 函数调用的时候,发生了事情?还有那个 setVisible 调用的时候,发生了什么事情?如果你清楚了这两个问题,你就知道为什么了。
----------------解决方案--------------------------------------------------------
http://java.sun.com/j2se/1.5.0/docs/api/index
你自己先看看这个连接,我过一会儿再来和你说。
----------------解决方案--------------------------------------------------------
applet中的repaint方法我知道。。他是调用update()方法和paint()方法
setvisible我原来看的资料说是让框架变成可见;
这样的理解不知道对不对。。。
我先看你给的资料。。不过我想你可能还是要帮我说下。。我的英文水平不是很高。。现在还在努力提高中
----------------解决方案--------------------------------------------------------
paint 方法不是独立于一个对象的,相反它是从属于一个对象的,比如JPanel对象, 当JPanel对象被建立的时候,paint 方法就被自动调用了,同样当他们刷新的时候,paint 方法也会自动被调用。
----------------解决方案--------------------------------------------------------