JAVA課程设计报告(绘制散点图).doc
文本预览下载声明
JAVA课程设计报告
设计题目:绘制散点图
小组成员:
程序功能:
功能一:打开一个文本文件,读取其中的坐标数值并绘制出散点图,并同时在控制台中输出读取的坐标
功能二:根据用户输入的点数,随机绘制散点图
设计思路和框图:
首先创建一个框架窗口,在其上添加菜单栏,在菜单项上增加打开文件和随机生成散点图。
在具体程序中,创建窗口的类为Diagram,在类中写入paintComponent函数,直接在容器上绘图,获取参数时用getGraphics()。画坐标线是用drawLine(),画坐标点用drawString()。因为小程序有两个功能,所以paintComponent()中有两个方法,一个用来绘制读取的文件中得坐标,另一个绘制Math.random()函数产生的随机数坐标,坐标数由输入对话框获得。因为要设置一个参数来判断调用哪一个方法。
对于菜单项“打开”和“随机生成散点图”分别添加事件监听器,用JFileChooser类来实现文件的打开功能,用文件输入流FileReader和缓冲字符输入流BufferedReader来读取文件中得内容,当点击“随机生成散点图”菜单项时用showInputDialog()函数创建输入对话框,对话框中的文本框输入用户要生成的散点数。
程序实现的关键点:
在程序执行过程中repaint()函数的调用;调用paintComponents()函数时用getGraphics()获得参数;因为坐标线绘制时不是以容器中的零点开始,所以读取文件中的坐标值和随机生成坐标值时数值要做相应的调整以适应容器。
程序代码及执行结果:
package scatter.update;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class ScatterUpdate {
public static int a;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Diagram dia=new Diagram();
}
}
class Diagram extends JFrame implements ActionListener{
JMenuBar menu=new JMenuBar();
JMenu file=new JMenu(文件);
JMenuItem open=new JMenuItem(打开);
JMenuItem rand=new JMenuItem(随机生成散点图);
Container con=getContentPane();
int a,c=1;
String[] num;
JFileChooser chooser=new JFileChooser();
Diagram(){
super(散点图绘制小程序V1.1);
this.setBounds(500,200,400,400);
setJMenuBar(menu);
menu.add(file);
file.add(open);
file.add(rand);
rand.addActionListener(this);
open.addActionListener(this);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==rand){
con.repaint();
String s=JOptionPane.showInputDialog(null, 输入点数, 随机生成散点图, JOptionPane.QUESTION_MESSAGE);
a=Integer.parseInt(s);
c=1;
paintComponents(getGraphics());
}
else if(e.getSource()==open){
con.repaint();
choice();
c=0;
显示全部