51,408
社区成员
发帖
与我相关
我的任务
分享
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Arc2D;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
//import
public class FanTest {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(900, 500);
f.setTitle("FanTest");
APanel p1 = new APanel();
APanel p2 = new APanel();
APanel p3 = new APanel();
Container c = f.getContentPane();
c.setLayout(new FlowLayout());
c.add(p1);
c.add(p2);
c.add(p3);
// FanButtonPanel fb=new FanButtonPanel();
// f.add(fb,FlowLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class APanel extends JPanel {
private JPanel fbp;
private FanPanel fp;
public APanel() {
setPreferredSize(new Dimension(300, 200));
setLayout(new BorderLayout());
fbp = new JPanel();
setFanButtonPanel(fbp);
add(fbp, BorderLayout.NORTH);
fp = new FanPanel();
fp.setBorder(BorderFactory.createLineBorder(Color.black));
add(fp);
}
public void setFanButtonPanel(JPanel fbp) {
setSize(300, 500);
JButton start = new JButton("start");
// Start st = new Start();
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { // FanPanel fp=new
// FanPanel();
Fan[] f = new Fan[4];
Fan f1 = new Fan(360 - 15);
f[0] = f1;
f1 = new Fan(90 - 15);
f[1] = f1;
f1 = new Fan(180 - 15);
f[2] = f1;
f1 = new Fan(270 - 15);
f[3] = f1;
for (Fan f2 : f)
fp.addfan(f2);
FanThread ft = new FanThread(fp, f, 2.0);
Thread t = new Thread(ft);
t.start();
fp.repaint();
}
});
JButton stop = new JButton("stop");
Stop sp = new Stop();
stop.addActionListener(sp);
start.setSize(150, 100);
stop.setSize(150, 100);
fbp.add(start);
fbp.add(stop);
}
}
class Stop implements ActionListener {
public void actionPerformed(ActionEvent e) {
}
}
class FanPanel extends JPanel {
private ArrayList<Fan> fal = new ArrayList<Fan>();
public void addfan(Fan f) {
fal.add(f);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g1 = (Graphics2D) g;
g1.setColor(Color.RED);
for (Fan f : fal) {
g1.fill(f.getShape());
// g.drawRect(50, 50, 20, 20);
}
}
}
class Fan {
private int s;
private static final double x = 20, y = 20, r = 130, xx = x + r,
yy = y + r;
public Fan(int s1) {
s = s1;
}
public Arc2D.Double getShape() {
return new Arc2D.Double(x, y, r, r, s, 30, Arc2D.Double.PIE);
// return arc;
}
public void move() {
s %= 360;
s++;
System.out.println("move");
}
}
class FanThread implements Runnable {
private FanPanel fp;
private Fan[] fs = new Fan[4];
private double v;
public FanThread(FanPanel fp1, Fan[] f1, double v1) {
fp = fp1;
for (int i = 0; i < 4; i++) {
fs[i] = f1[i];
}
fs = f1;
v = v1;
System.out.println("FanThread");
}
public void setV(int v1) {
v = v1;
}
public void run() {
try {
System.out.println("run");
while (v != 0) {
for (Fan f : fs) {
f.move();
}
fp.repaint();
Thread.sleep((int) (v * 1000));
}
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}