Part1 画一条直线
俗话说,万事开头难,今天来完成最难的一步,画一条直线,不过不是真正的实现,是用“粒子”画出来的直线!
基本步骤
- 显示一个界面JFrame
- 给界面加上一个流式布局管理器,加上一个按钮
- 给按钮加监听器,点击按钮后,画一条呈直线的点
UI部分
package aline;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Aline extends JFrame{
public void init(){
this.setSize(800,600);
this.setLocationRelativeTo(null);
this.setTitle("粒子仿真");
FlowLayout flowlayout = new FlowLayout();
this.setLayout(flowlayout);
JButton Btn = new JButton("开始");
this.add(Btn);
this.setVisible(true);
Graphics g = this.getGraphics();
LineButtonListener LBL = new LineButtonListener(g);
Btn.addActionListener(LBL);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Aline al = new Aline();
al.init();
}
}
好吧,代码比较简单,稍微要注意的是需要进行Graphics 的传参操作;
监听器部分
package aline;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LineButtonListener implements ActionListener {
Graphics g;
public LineButtonListener(Graphics g){
this.g = g;
}
@Override
public void actionPerformed(ActionEvent e) {
int startX = 100;
int startY = 400;
int speed = 10;
for (int i = 0; i < 50; i++) {
startX += speed;
startY -= speed;
g.fillOval(startX, startY, 10, 10);
try {
Thread.sleep(20);
} catch (Exception ef) {
}
}
}
}
实现ActionListener接口,重写其actionPerformed方法,意思是在点击按钮是触发监听器的方法
里面就是一个简单的循环画点 XD
画出来大概是酱紫↓
点下开始就能看的点不停地被画出来
把速度speed调低点,可以看到
看起来更像一条直线了:)
传送门:从粒子系统到群体智能 part2