67,513
社区成员
发帖
与我相关
我的任务
分享
import javax.swing.*;
import java.awt.*;
public class DrawArcs extends JFrame {
public DrawArcs() {
getContentPane().add(new ArcsPanel());
}
public static void main(String[] args) {
DrawArcs frame = new DrawArcs();
frame.setTitle("模拟风扇");
frame.setSize(300, 400);
frame.setLocation(400, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
}
class ArcsPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int) (Math.min(getWidth(), getHeight()) * 0.4);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x, y, 2 * radius, 2 * radius, 0, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, 90, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, 180, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, 270, 30);
}
}
JButton btnStart = new JButton("Start");
JButton btnOne = new JButton("1");
JButton btnTwo = new JButton("2");
JButton btnThree = new JButton("3");
JButton btnStop = new JButton("Stop");
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Fan extends JFrame implements ActionListener{
ArcsPanel fanPanel = new ArcsPanel();
JButton btnStart = new JButton("Start");
JButton btnOne = new JButton("1");
JButton btnTwo = new JButton("2");
JButton btnThree = new JButton("3");
JButton btnStop = new JButton("Stop");
public Fan() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(fanPanel, BorderLayout.CENTER);
Panel buttons = new Panel();
c.add(buttons, BorderLayout.SOUTH);
buttons.add(btnStart);
buttons.add(btnOne);
buttons.add(btnTwo);
buttons.add(btnThree);
buttons.add(btnStop);
btnStart.addActionListener(this);
btnOne.addActionListener(this);
btnTwo.addActionListener(this);
btnThree.addActionListener(this);
btnStop.addActionListener(this);
}
public static void main(String[] args) {
Fan frame = new Fan();
frame.setTitle("模拟风扇");
frame.setSize(300, 400);
frame.setLocation(400, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Start"))
fanPanel.speed = 2;
else if (e.getActionCommand().equals("1"))
fanPanel.speed = 2;
else if (e.getActionCommand().equals("2"))
fanPanel.speed = 4;
else if (e.getActionCommand().equals("3"))
fanPanel.speed = 8;
else if (e.getActionCommand().equals("Stop"))
fanPanel.speed = 0;
}
}
class ArcsPanel extends JPanel implements ActionListener{
Timer timer;
int arc = 0;
int speed = 0;
public ArcsPanel() {
super();
timer = new Timer(10, this);
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int) (Math.min(getWidth(), getHeight()) * 0.4);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x, y, 2 * radius, 2 * radius, arc+0, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc+90, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc+180, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc+270, 30);
}
@Override
public void actionPerformed(ActionEvent e) {
arc+=speed;
if (arc>=360) arc=0;
this.repaint();
}
}
JSlider slider = new JSlider(SwingConstants.VERTICAL, 0, 20, 0);
slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
fanPanel.speed = slider.getValue();
}
});
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Start")) {
bufferThread(0, 5);
} else if (e.getActionCommand().equals("1")) {
bufferThread(fanPanel.speed, 10);
} else if (e.getActionCommand().equals("2")) {
bufferThread(fanPanel.speed, 15);
} else if (e.getActionCommand().equals("3")) {
bufferThread(fanPanel.speed, 20);
} else if (e.getActionCommand().equals("Stop")) {
bufferThread(fanPanel.speed, 0);
}
}
public void bufferThread(final int start, final int end) {
new Thread(new Runnable() {
@Override
public void run() {
btnStart.setEnabled(false);
btnOne.setEnabled(false);
btnTwo.setEnabled(false);
btnThree.setEnabled(false);
btnStop.setEnabled(false);
arcBuffer(start, end);
btnStart.setEnabled(true);
btnOne.setEnabled(true);
btnTwo.setEnabled(true);
btnThree.setEnabled(true);
btnStop.setEnabled(true);
}
}).start();
}
public void arcBuffer(int start, int end) {
if (start > end) {
for (; start >= end; start--) {
slider.setValue(start);
fanPanel.speed = start;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} else if (start < end) {
for (; start <= end; start++) {
slider.setValue(start);
fanPanel.speed = start;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Start")) {
// fanPanel.speed = 5;
for (int i = 0; i <= 5; i++) {
fanPanel.speed = i;
fanPanel.arcSleep();
}
} else if (e.getActionCommand().equals("1"))
fanPanel.speed = 10;
else if (e.getActionCommand().equals("2"))
fanPanel.speed = 15;
else if (e.getActionCommand().equals("3"))
fanPanel.speed = 20;
else if (e.getActionCommand().equals("Stop")) {
// fanPanel.speed = 0;
for (int i = 20; i >= 0; i--) {
fanPanel.speed = i;
fanPanel.arcSleep();
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Fan extends JFrame implements ActionListener {
ArcsPanel fanPanel = new ArcsPanel();
JButton btnStart = new JButton("Start");
JButton btnOne = new JButton("1");
JButton btnTwo = new JButton("2");
JButton btnThree = new JButton("3");
JButton btnStop = new JButton("Stop");
public Fan() {
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(fanPanel, BorderLayout.CENTER);
Panel buttons = new Panel();
c.add(buttons, BorderLayout.SOUTH);
buttons.add(btnStart);
buttons.add(btnOne);
buttons.add(btnTwo);
buttons.add(btnThree);
buttons.add(btnStop);
btnStart.addActionListener(this);
btnOne.addActionListener(this);
btnTwo.addActionListener(this);
btnThree.addActionListener(this);
btnStop.addActionListener(this);
}
public static void main(String[] args) {
Fan frame = new Fan();
frame.setTitle("模拟风扇");
frame.setSize(300, 400);
frame.setLocation(400, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Start")) {
// fanPanel.speed = 5;
for (int i = 0; i <= 5; i++) {
fanPanel.speed = i;
fanPanel.arcSleep();
}
} else if (e.getActionCommand().equals("1"))
fanPanel.speed = 10;
else if (e.getActionCommand().equals("2"))
fanPanel.speed = 15;
else if (e.getActionCommand().equals("3"))
fanPanel.speed = 20;
else if (e.getActionCommand().equals("Stop")) {
fanPanel.speed = 0;
for (int i = 20; i >= 0; i--) {
fanPanel.speed = i;
fanPanel.arcSleep();
}
}
}
}
class ArcsPanel extends JPanel implements ActionListener {
Timer timer;
int arc = 0;
int speed = 0;
public ArcsPanel() {
super();
timer = new Timer(10, this);
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
int xCenter = getWidth() / 2;
int yCenter = getHeight() / 2;
int radius = (int) (Math.min(getWidth(), getHeight()) * 0.4);
int x = xCenter - radius;
int y = yCenter - radius;
g.fillArc(x, y, 2 * radius, 2 * radius, arc + 0, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc + 90, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc + 180, 30);
g.fillArc(x, y, 2 * radius, 2 * radius, arc + 270, 30);
}
@Override
public void actionPerformed(ActionEvent e) {
arc += speed;
if (arc >= 360)
arc = 0;
this.repaint();
}
public void arcSleep() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}