这方面我不大熟悉
不知道java关于绘图方面有无刷新之类方法?
如果可以刷新的话就好了
要不重置画面,在绘第二次图的时候将背景重置如何?
不知道java关于绘图方面有无刷新之类方法?
如果可以刷新的话就好了
要不重置画面,在绘第二次图的时候将背景重置如何?
解决方案 »
- 提取文本内容中的特定内容
- eclipse上运行正常,导出后图像不显示是怎么回事?
- 请问一下如何用PreparedStatement 进行选择条件查询?
- java.lang.OutOfMemoryError: PermGen space 求助
- java生成.exe文件在红旗linux下运行显示汉字为小方块的问题
- 接口变量访问问题
- JDK文档中的一个例子,不知道什么意思,感谢.
- 急!!!!!!!!!!!!
- 请大家帮忙看看下面的代码,编译可以通过,运行时却有很多问题
- JAVA中好多的方法是静态的吗?
- 高手莫进
- 怎样从命令行向public static void main (String arg[])传参数!!!
那就是调用super.paintComponent(g);必须在paintComponent 中第一句调用它,应为你还要把一些必要的工作交给它。试试吧,我已经测试过了
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;public class Model extends JFrame implements KeyListener
{
DrawLinePane pane = new DrawLinePane();
public Model() {
super("This is Cartoon");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addKeyListener(this);
getContentPane().add(pane);
show(true);
}
public void keyTyped(KeyEvent e)
{
int i = 1;
}
public void keyReleased(KeyEvent e)
{
int i =1;
}
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_UP){
pane.up();
}else if (e.getKeyCode() == KeyEvent.VK_DOWN){
pane.down();
}else if (e.getKeyCode() == KeyEvent.VK_LEFT){
pane.left();
}else if (e.getKeyCode() == KeyEvent.VK_RIGHT){
pane.right();
}
}
public static void main(String args[]) {
System.out.println("Starting Model...");
new Model();
}
}
class DrawLinePane extends JPanel implements Runnable
{
private Thread threadRunner = null;
double xPos = 0;
double yPos = 0;
double xMove = 1;
double yMove = 1;
DrawLinePane()
{
Thread threadRunner = new Thread(this);
threadRunner.start();
}
public void run()
{
while(true)
{
xPos += xMove;
yPos += yMove;
if(xPos > 300 || xPos < 0 )
{
xMove *= -1;
}
if(yPos > 300 || yPos < 0)
{
yMove *= -1;
}
repaint();
try{
Thread.sleep(100);
}catch(Exception e){}
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2D = (Graphics2D)g;
Rectangle2D.Double rect2D = new Rectangle2D.Double (xPos, yPos, 10, 10);
g2D.setColor(Color.black);
g2D.fill(rect2D);
}
void up()
{
yMove -= 2;
}
void down()
{
yMove +=2;
}
void left()
{
xMove -= 2;
}
void right()
{
xMove += 2;
}
}