Java 程序设计实验报告
Java Programming Assignment
专 业:信息与计算科学专业
班 级:信 计 1 1 0 2 班
学 号:1 1 0 8 0 6 0 2 2 3
姓 名:姜
圣
涛
2013 年 06 月 05 日
目录
一 功能描述........................................................................................................2
二 Java 源文件与类描述...................................................................................2
三 界面设计与事件处理说明...........................................................................2
四、(其它).....................................................................................................3
源程序代码................,,,,,,,,.................................................................................3
程序运行界面..........,,,,,,,,....................................................................................8
实验总结...............,,,,,,,,.......................................................................................9
1
通过代码将程序改造成为一个可以自动旋转的小风扇,并且做到:
一、功能描述
(1)当按下加速时可以加快小风扇的旋转速度。
(2)当按下减速时可以减缓小风扇的旋转速度。
(3)当按下切换旋转方向时小风扇可以反着旋转。
(4)当按下暂停时小风扇可以停止转动。
(5)当按下开始时小风扇可以以默认速度值进行旋转。
二、Java 源文件与类描述
方 法
void main(String[] args)
备 注
主函数
public Fengche()
Void
arg0)
actionPerformed(ActionEven
void paintComponent(Graphics page)
void actionPerformed(ActionEvent e)
void actionPerformed(ActionEvent
event)
这个类继承了
Jpanl 类并成为程
序的主体部分;
画出小风扇。
内部类
内部类
内部类
类 名
zhuhanshu
Fengche
属 性
Public
Public
TListener
StopListener
public
private
OtherListener
private
void actionPerformed(ActionEvent
event)
三、界面设计与事件处理说明
程序运行主界面如下方界面图所示,总结布局思路是将 5 个按钮放在主界面的下面(开
始,暂停,加速,减速,切换旋转方向)。
(1)当按下开始时,风扇以默认的速度大小值为 10 进行旋转。
(2)当按下加速时,风扇将加速旋转,重复按,旋转速度越来越快,界面中可以看到
相应的速度大小值。
(3)当按下减速时,风扇将减速旋转,重复按,旋转速度越来越慢,界面中可以看到
相应的速度大小值。
(4)当按下暂停时,风扇将暂停,停止旋转。
(5)当按下切换旋转方向时,风扇将反方向旋转。
2
四、(其它)
附:源程序代码
import javax.swing.*;
public class Zhuhanshu {
public static void main(String[] args) {
JFrame frame = new JFrame("@@@************* 小风扇 *************@@@");
Fengche panel = new Fengche();
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
***********************************************************************************
***********************************************************************************
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Fengche extends JPanel implements ActionListener {
static int time = 1;
static int speed = 3;
public int i = 0;
3
JPanel panel = new JPanel();
JLabel label1 = new JLabel("速度值");
JLabel label = new JLabel();
JButton start = new JButton("开始");
JButton stop = new JButton("停止");
JButton faster = new JButton("加速");
JButton slower = new JButton("减速");
JButton reverse = new JButton("切换旋转方向");
Timer timer = new Timer(10, this);
TListener tl = new TListener();
public Fengche()
{
setLayout(new BorderLayout());
add(panel, BorderLayout.SOUTH);
panel.add(start);
panel.add(stop);
panel.add(faster);
panel.add(slower);
panel.add(reverse);
panel.add(label1);
panel.add(label);
start.addActionListener(new OtherListener());
stop.addActionListener(new StopListener());
faster.addActionListener(new OtherListener());
slower.addActionListener(new OtherListener());
4
reverse.addActionListener(new OtherListener());
setPreferredSize(new Dimension(600, 400));
setBackground(Color.green);
timer = new Timer(1, tl);
}
public void actionPerformed(ActionEvent arg0) {
}
class TListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
i += speed;
repaint();
}
}
private class StopListener implements ActionListener
{
public void actionPerformed(ActionEvent event) {
timer.stop();
speed = 0;
label.setText(Integer.toString(speed));
start.setEnabled(true);
stop.setEnabled(false);
faster.setEnabled(false);
slower.setEnabled(false);
5
reverse.setEnabled(false);
}
}
private class OtherListener implements ActionListener
{
public void actionPerformed(ActionEvent event) {
if (event.getSource() == start) {
timer.start();
speed = 10;
label.setText(Integer.toString(speed));
}
else if (event.getSource() == faster) {
speed++;
label.setText(Integer.toString(speed));
} else if (event.getSource() == slower) {
speed--;
if (speed < 1)
speed = 1;
label.setText(Integer.toString(speed));
} else
speed = -speed;
start.setEnabled(false);
stop.setEnabled(true);
faster.setEnabled(true);
slower.setEnabled(true);
reverse.setEnabled(true);
6
}
}
public void paintComponent(Graphics page) {
super.paintComponent(page);
int x = getWidth() / 2;
int y = getHeight() / 2;
int radius = (int) (Math.min(getWidth(), getHeight() * 0.3));
int n = x - radius;
int m = y - radius;
page.fillArc(n, m, 2 * radius, 2 * radius, i + 120, 50);
page.setColor(Color.blue);
page.fillArc(n, m, 2 * radius, 2 * radius, i + 240, 50);
page.setColor(Color.red);
page.fillArc(n, m, 2 * radius, 2 * radius, i + 360, 50);
page.setColor(Color.pink);
int x1 = 280, y1 = 200, x2 = 180, y2 = 360;
int x3 = 320, y3 = y1, x4 = 420, y4 = y2;
page.drawLine(x1, y1, x2, y2);
page.drawLine(x3, y3, x4, y4);
page.drawLine(x1, y1, x3, y1);
page.drawLine(x2, y2, x4, y2);
}
}
7