我先用上一篇貼的方法寫了可以讀取txt數據的程式
顯示的0.01代表成功讀到數據了
再來就遇到一些問題
原本想用g.drawString(".",x,y)把點畫上去,但是x,y只能用整數
後來用Graphics2D的drawString,也只能用到float浮點數
如果要用double的話 就剩下用Graphics2D去畫 Rectangle2D.Double(x,y,w,h,)
意思是畫一個很小的長方形看起來像一個點最後寫完程式卻發現*.Double()裡面不能放陣列的數據......
只要裡面放了陣列就會變成這樣
弄了我兩三天了還是沒辦法解決....
打算先放著之後再回來研究了 (T-T)
--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.awt.geom.*;
public class Awt01 extends Frame{
//public double trans_array[][]; //二維矩陣
public double trans_array[];
static Awt01 frm =new Awt01();
static Graphics2D g2;
public static void main(String[] args) throws IOException {
frm.setTitle("Awt01");
frm.setSize(500,600);
frm.setVisible(true);
FileReader fr = new FileReader("test.txt");
BufferedReader br = new BufferedReader(fr);
String line, tempstring;
String[] tempArray = new String[2];
ArrayList<String> myList = new ArrayList<String>();
int i = 0;
while ((line = br.readLine()) != null) {
// br.readLine()是讀取txt檔的每一行資料,把讀到的資料存到line
// 再將line丟給tempstring去儲存
tempstring = line;
// tempstring.split("\\s") 會依照空白鍵來切割,有幾個空白就切幾次
tempArray = tempstring.split("\\s");
// 按照順序.一行一行的儲存到動態陣列裡面
for (i = 0; i < tempArray.length; i++) {
myList.add(tempArray[i]);
}
}
// tempArray[]是String,一維矩陣
/* 轉換成double的二維矩陣
int k = myList.size() / 2;
int count = 0;
double[][] trans_array = new double[k][2];
for (int x = 0; x < myList.size() / 2; x++) {
for (int y = 0; y < 2; y++) {
trans_array[x][y] = Double.parseDouble((String) myList.get(count));
count++; // 一個index來決定myList讀取值的位置
}
}**/
//轉換成double的一維矩陣
int k =myList.size();
int count=0;
double[] trans_array =new double[k];
for(int x=0;x<myList.size();x++){
trans_array[x] =Double.parseDouble((String) myList.get(count));
count++;
}
System.out.println(trans_array[3]);
}
public void paint(Graphics g) {
Graphics2D g2=(Graphics2D) g;
Line2D linex=new Line2D.Double(0,frm.getHeight()*5/6,frm.getWidth(),frm.getHeight()*5/6);
Line2D liney=new Line2D.Double(frm.getWidth()/6,0,frm.getWidth()/6,frm.getHeight());
g2.draw(linex);
g2.draw(liney);
//for (int t=0;t<5;t++){
Rectangle2D.Double r1=new Rectangle2D.Double(trans_array[t*2-1], trans_array[t*2], 1, 1);
g2.draw(r1);
//}
}
}
---------------------------------------------------------------------
150926 成功畫出東西了!!爽~
晚點再補齊內容