新手提问 现在我有这样的数据a(1,2,3,4,5,6,7)b(1,5,3,5,1,2,3)现在想画一个坐标图a为x轴,b为y轴表示a,b之间的关系请问该怎么画,希望知道的大虾详解,谢谢。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在网上去下个jfreechart包 这个包是专门画图表的 可以画各种各样的图表 这里有参考教程:http://blog.csdn.net/hapylong/archive/2007/05/31/1633001.aspx import java.awt.*;import java.awt.geom.*;import javax.swing.*;/** * * @author afunx */public class DrawTest { public static void main(String args[]){ EventQueue.invokeLater(new Runnable(){ public void run(){ DrawFrame frame = new DrawFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }}class DrawFrame extends JFrame{ public DrawFrame(){ setTitle("DrawTest"); setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); DrawComponent component = new DrawComponent(); add(component); } public static final int DEFAULT_WIDTH = 400; public static final int DEFAULT_HEIGHT = 450;}//30像素为一个单位距离class DrawComponent extends JComponent{ private int[] a = {0,1,2,3,4,5,6,7};//a中加一个0为坐标原点的x坐标 private int[] b = {0,1,5,3,5,1,2,3};//b中加一个0为坐标原点的y坐标 public void paintComponent(Graphics g){ Graphics2D g2 = (Graphics2D) g; Double Yx = 50.0;//y轴的x坐标 Double Yy = 50.0;//y轴的y坐标 Double Xx = 350.0;//x轴的x坐标 Double Xy = 350.0;//x轴的y坐标 Double Ox = 50.0;//原点O的x坐标 Double Oy = 350.0;//原点O的y坐标 g2.draw(new Line2D.Double(Ox,Oy,Yx,Yy));//画x轴 g2.draw(new Line2D.Double(Ox,Oy,Xx,Xy));//画y轴 //画y轴的箭头: g2.draw(new Line2D.Double(Yx-5,Yy+5,Yx,Yy)); g2.draw(new Line2D.Double(Yx+5,Yy+5,Yx,Yy)); //画x轴的箭头: g2.draw(new Line2D.Double(Xx-5,Xy-5,Xx,Xy)); g2.draw(new Line2D.Double(Xx-5,Xy+5,Xx,Xy)); //标出O,X,Y: g2.drawString("O", 40, 360); g2.drawString("X", 360, 360); g2.drawString("Y", 40, 40); for(int x=1;x<350/30-1;x++){ g2.drawString(Integer.toString(x), 50+30*x, 360); } for(int y=1;y<350/30-1;y++){ g2.drawString(Integer.toString(y), 40, 350-30*y ); } //实际坐标(x,y)与图上坐标(X,Y)的映射关系为: //X=50+30*x,Y=350-30*y,30表示一个单位长度用30像素表示 //JAVA中X坐标正方向为右与平时所绘函数相同,所以“+”,Y坐标正方向为左与平时所绘函数相反,所以。“-” //(50,350)为程序中原点的坐标 for(int i=0;i<a.length-1;i++){ g2.draw(new Line2D.Double(50+a[i]*30, 350-b[i]*30,50+a[i+1]*30,350-b[i+1]*30)); } }} 感谢几位的回答,afunx的回答很有用,谢谢 关于 imageIO.read(File f) 的问题 有什么数据库是不用配置的,难不成只有txt和XML存储数据了 String如何按照一个指定的charset解压出一个byte流 基础测试. jxl保存大量数据时内存越界问题! SOS!!!! 用JBuilder7编了一个JAVA程序不能对数据库进行写操作,为什么呢? 有关页面显示applet的问题` 在线等待 请问JAVA怎么得到一个字符的ASC值。 java中怎么用swing实现一个问答题? 怎么也解决不了,弹出式内容辅助菜单,希望帮忙 求助:Eclipse报错
import java.awt.geom.*;
import javax.swing.*;
/**
*
* @author afunx
*/
public class DrawTest { public static void main(String args[]){
EventQueue.invokeLater(new Runnable(){
public void run(){
DrawFrame frame = new DrawFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}class DrawFrame extends JFrame{
public DrawFrame(){
setTitle("DrawTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
DrawComponent component = new DrawComponent();
add(component);
}
public static final int DEFAULT_WIDTH = 400;
public static final int DEFAULT_HEIGHT = 450;
}
//30像素为一个单位距离
class DrawComponent extends JComponent{
private int[] a = {0,1,2,3,4,5,6,7};//a中加一个0为坐标原点的x坐标
private int[] b = {0,1,5,3,5,1,2,3};//b中加一个0为坐标原点的y坐标
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
Double Yx = 50.0;//y轴的x坐标
Double Yy = 50.0;//y轴的y坐标
Double Xx = 350.0;//x轴的x坐标
Double Xy = 350.0;//x轴的y坐标
Double Ox = 50.0;//原点O的x坐标
Double Oy = 350.0;//原点O的y坐标
g2.draw(new Line2D.Double(Ox,Oy,Yx,Yy));//画x轴
g2.draw(new Line2D.Double(Ox,Oy,Xx,Xy));//画y轴
//画y轴的箭头:
g2.draw(new Line2D.Double(Yx-5,Yy+5,Yx,Yy));
g2.draw(new Line2D.Double(Yx+5,Yy+5,Yx,Yy));
//画x轴的箭头:
g2.draw(new Line2D.Double(Xx-5,Xy-5,Xx,Xy));
g2.draw(new Line2D.Double(Xx-5,Xy+5,Xx,Xy));
//标出O,X,Y:
g2.drawString("O", 40, 360);
g2.drawString("X", 360, 360);
g2.drawString("Y", 40, 40); for(int x=1;x<350/30-1;x++){
g2.drawString(Integer.toString(x), 50+30*x, 360);
}
for(int y=1;y<350/30-1;y++){
g2.drawString(Integer.toString(y), 40, 350-30*y );
}
//实际坐标(x,y)与图上坐标(X,Y)的映射关系为:
//X=50+30*x,Y=350-30*y,30表示一个单位长度用30像素表示
//JAVA中X坐标正方向为右与平时所绘函数相同,所以“+”,Y坐标正方向为左与平时所绘函数相反,所以。“-”
//(50,350)为程序中原点的坐标
for(int i=0;i<a.length-1;i++){
g2.draw(new Line2D.Double(50+a[i]*30, 350-b[i]*30,50+a[i+1]*30,350-b[i+1]*30));
}
}
}