达内1培训日志

第一天 我学的是画图 画了个android的人 要注意的就是那几个方法的使用 关于画圆弧 圆 矩形 直线 还有就是开一个线程进行坐标的更换 paint方法里是draw出图形 在thread里的
run 方法里来修改坐标
1 随机星星
package ReviewMonday;


import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.geom.FlatteningPathIterator;


import javax.swing.JFrame;
import javax.swing.JPanel;


public class star extends JFrame{ //画板
// static star mStar;

public static void main(String[] args) {
star mStar = new star();
Mypanel mypanel = new Mypanel();
mStar.setSize(400, 600);
mStar.setDefaultCloseOperation(mStar.EXIT_ON_CLOSE);//设置默认关闭
// mStar.setResizable(false); //设置 不可以拉伸
mStar.add(mypanel);

mStar.setVisible(true);

}

}


class Mypanel extends JPanel{//画布
public void paint(Graphics g){
super.paint(g);
setBackground(Color.black);
for(int i = 0; i < 1000; i++){
int a = (int) (Math.random() *1024);
int b = (int) (Math.random() *1024);
int e = (int) (Math.random() *255);
int c = (int) (Math.random() *255);
int d = (int) (Math.random() *255);
// g.setColor(new Color((int)Math.random()*255,(int)Math.random()*255,(int)Math.random()*255));
g.setColor(new Color(e, c, d));
// g.setColor(Color.yellow);
g.drawString("★", a, b);
}
// for(int i = 0; i < 100; i++){
// int a =
//g.setColor(new Color((int)Math.random()*255,(int)Math.random()*255,(int)Math.random()*255));
// g.setColor(Color.white);
// System.out.println(i);
// g.drawString("★", (int) Math.random()* 400, (int) Math.random()* 600);
// g.drawString("★",30, 30);
// }
}

}
g.setColor(new Color(e, c, d)); //这种方法设置自己喜欢的rgb颜色

这里面有个小问题 就是g.setColor(new Color((int)Math.random()*255,(int)Math.random()*255,(int)Math.random()*255)); 这样画不出来 不知道为什么

后来发现数组的使用 为了让星星一起落下 而不是随机移动
代码如下

package ReviewMonday;

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

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class StarDownInOrder extends JFrame{


public static void main(String[] args) {
MyJPanel myJPanel = new MyJPanel();
// myJPanel.setImage();
StarDownInOrder starDownInOrder = new StarDownInOrder();
starDownInOrder.setSize(800, 600);
myJPanel.setImage(); //重要 为什么在前面
Thread thread = new Thread(myJPanel);
// myJPanel.setImage();
thread.start();

starDownInOrder.add(myJPanel);
starDownInOrder.setVisible(true);


}

}

class MyJPanel extends JPanel implements Runnable{
int[] x = new int[300];
int[] y = new int[300];
// Image[] photoImages;
public void setImage(){
// Image[] photoImages; 这里不能写为什么?
// Image[] photoImages = new Image[6];
// photoImages[0] = new ImageIcon("image/2013-03-10-0").getImage();
// photoImages[1] = new ImageIcon("image/2013-03-10-1").getImage();
// photoImages[2] = new ImageIcon("image/2013-03-10-2").getImage();
// photoImages[3] = new ImageIcon("image/2013-03-10-3").getImage();
// photoImages[4] = new ImageIcon("image/2013-03-10-4").getImage();
// photoImages[5] = new ImageIcon("image/2013-03-10-5").getImage();
for(int i = 0; i < 300; i++){
x[i] = (int) (Math.random()*800);
y[i] = (int) (Math.random()*600);
}
}
public void paint(Graphics g){
super.paint(g);//忘记了
// setImage(); //不能再这里面调用 因为如果这样子 每次都是更新数据的 所以要在前面调用
setBackground(Color.black);

// g.drawImage(new ImageIcon("image/2013-03-10-0").getImage(), 59, 30, null);

// g.drawImage(photoImages[i], 100, 100, 30, 30, null);
g.setColor(Color.white);
for(int i = 0; i < 300; i++)
g.drawString("※", x[i], y[i]);
}
@Override
public void run() {
// TODO Auto-generated method stub


while(true){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int i = 0; i < 300; i++) {
y[i]++;
//x[i]--;
// if(x[i] < 0){
// x[i] = 800;
// }
if(y[i] > 600){
y[i] = 0;
}
}
repaint();
}
}
}

注意点
1 repaint 在线程里 线程负责修改x y 的代码
2 super。paint的调用 负责销毁等
3 调用setImage的时机 不能在paint里面
4 类和对象 要乖乖的写在方法中然后调用 不能凭空写在类里面的语句
5 对于变量的定义 定义的位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值