当前位置: 技术问答>java相关
在应用程序中绘图的问题
来源: 互联网 发布时间:2015-05-03
本文导语: 绘制成功,但是为什么闪一下就没有了。谁能解决啊~~~ 代码如下: import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.applet.Applet; public class Game { public static void main(String[] args) { JFrame frame=new JFrame();...
绘制成功,但是为什么闪一下就没有了。谁能解决啊~~~
代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.Applet;
public class Game
{
public static void main(String[] args)
{
JFrame frame=new JFrame();
frame.setBounds(100,100,200,200);
frame.setResizable(false);
Container con=frame.getContentPane();
con.setLayout(new BorderLayout());
JPanel p=new JPanel();
con.add(p,BorderLayout.CENTER);
frame.show();
Graphics g=p.getGraphics();
g.setColor(Color.blue);
g.fillRect(50,50,90,90);
}
}
代码如下:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.Applet;
public class Game
{
public static void main(String[] args)
{
JFrame frame=new JFrame();
frame.setBounds(100,100,200,200);
frame.setResizable(false);
Container con=frame.getContentPane();
con.setLayout(new BorderLayout());
JPanel p=new JPanel();
con.add(p,BorderLayout.CENTER);
frame.show();
Graphics g=p.getGraphics();
g.setColor(Color.blue);
g.fillRect(50,50,90,90);
}
}
|
这是因为p.getGraphics()得到的只是某一时刻p的graphics,很快p又会被重绘过了。应该覆盖p的paint(Graphics g)方法,比如:
JPanel p=new JPanel() {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.blue);
g.fillRect(50,50,90,90);
}
}
JPanel p=new JPanel() {
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.blue);
g.fillRect(50,50,90,90);
}
}
|
right answer!