关于awt的一个小问题。。

x443137254 2015-05-08 01:50:15
我先贴代码:
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;

public class Paint1 extends Frame {

int a=254, b=1;

public static void main(String[] args) {
new Paint1().launch();
}

public void launch() {
setBounds(100, 50, 500, 500);
p.setVisible(true);
while(a>0) {
a += 2;
b -=1;
repaint();
}
}

public void print(Graphics g) {
Color c = g.getColor();
g.setColor(new Color(a, a, a));
g.fillRect(b, b, a, a);
g.setColor(c);
}
}


本意是想通过repaint画一个渐变色的方块,但运行起来窗口什么也没有....求指教
...全文
161 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
三仙半 2015-05-11
  • 打赏
  • 举报
回复
paint()是由GUI线程调用的,是个反复重绘的过程,不是咱们让它画一次,它就一直在那里了。
x443137254 2015-05-08
  • 打赏
  • 举报
回复
引用 1 楼 zys59 的回复:
1、应该重写paint()方法 2、while循环移到paint()方法中 3、在paint()方法开始时,重新设置a和b的值 4、while循环是死循环,知道a超出int的范围,抛异常为止 5、建议使用javax.swing.JFrame替代java.awt.Frame 下面的代码能画出图案,是不是你想象中的那样我就不知道了

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;

public class Paint1 extends Frame {
	int a = 254, b = 1;

	public static void main(String[] args) {
		new Paint1().launch();
	}

	public void launch() {
		setBounds(100, 50, 500, 500);
		this.setVisible(true);
	}

	public void print(Graphics g) {
		Color c = g.getColor();
		a = 254;
		b = 1;// 每次重绘都初始化a和b
		while (a > 0) {
			a -= 2;// 这里我改成减法运算了
			b += 1;// 这里改成加法了
			g.setColor(new Color(a, a, a));
			g.fillRect(b, b, a, a);
		}
		g.setColor(c);
	}
}
把a和b放paint里每次重绘都重新赋值一次就行了,可是为什么我放外面不行呢?我只需要循环重绘一次而已啊
x443137254 2015-05-08
  • 打赏
  • 举报
回复
我吧while放paint里还是不行哦,依然只是一片白板...难道是我机子的问题么
x443137254 2015-05-08
  • 打赏
  • 举报
回复
那个print是打错了……运行的时候是paint的,但跑起来却不是意料中的结果
三仙半 2015-05-08
  • 打赏
  • 举报
回复
1、应该重写paint()方法 2、while循环移到paint()方法中 3、在paint()方法开始时,重新设置a和b的值 4、while循环是死循环,知道a超出int的范围,抛异常为止 5、建议使用javax.swing.JFrame替代java.awt.Frame 下面的代码能画出图案,是不是你想象中的那样我就不知道了

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;

public class Paint1 extends Frame {
	int a = 254, b = 1;

	public static void main(String[] args) {
		new Paint1().launch();
	}

	public void launch() {
		setBounds(100, 50, 500, 500);
		this.setVisible(true);
	}

	public void print(Graphics g) {
		Color c = g.getColor();
		a = 254;
		b = 1;// 每次重绘都初始化a和b
		while (a > 0) {
			a -= 2;// 这里我改成减法运算了
			b += 1;// 这里改成加法了
			g.setColor(new Color(a, a, a));
			g.fillRect(b, b, a, a);
		}
		g.setColor(c);
	}
}

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧