2013-02-01 45 views
0

我需要從格式化下列方式文件中的Java之間畫線:畫點之間的直線文件

5 //Number of lines of points 
10 10 
23 56 
15 34 
32 67 
76 45 

我想我將不得不建立兩個數組,然後以某種方式添加這樣的值,但我完全失去了,真的需要一些指導。 任何幫助,將不勝感激!下面的代碼是需要修改以繪製線條的內容。現在它只是繪製點。

代碼:

import javax.swing.*; 
import java.awt.*; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 

public class Test { 

    private static final String FILE = "Desktop/Assign2Test1.txt"; 
    private static Point[] points; 

    public static void main(final String[] args){ 
     try{ 
      final BufferedReader br = new BufferedReader(new FileReader(new File(FILE))); 
      points = new Point[Integer.parseInt(br.readLine())]; 
      int i = 0; 
      int xMax = 0; 
      int yMax = 0; 
      while(br.ready()){ 
       final String[] split = br.readLine().split("\t"); 
       final int x = Integer.parseInt(split[0]); 
       final int y = Integer.parseInt(split[1]); 
       xMax = Math.max(x, xMax); 
       yMax = Math.max(y, yMax); 
       points[i++] = new Point(x, y); 




      } 
      final JFrame frame = new JFrame("Point Data Rendering"); 
      final Panel panel = new Panel(); 
      panel.setPreferredSize(new Dimension(xMax + 10, yMax + 10)); 
      frame.setContentPane(panel); 
      frame.pack(); 
      frame.setVisible(true); 
      frame.repaint(); 
     } catch (final Exception e){ 
      e.printStackTrace(); 
     } 
    } 

    public static class Panel extends JPanel { 

     @Override 
     public void paintComponent(final Graphics g){ 
      g.setColor(Color.RED); 
      for(final Point p : points){ 
       g.fillRect((int) p.getX(), (int) p.getY(), 2, 2); 
      } 
     } 

    } 

} 
+0

我從來沒有與前鄰接矩陣搞砸,我已經變得如此糊塗到放棄的地步。我會以不同的方式發佈我的代碼。我想做一個鄰接矩陣,所以我可以嘗試實現一個我發現的算法。 – JLott

+0

現在你正在哪裏得到問題? – Smit

+1

我不知道如何把一個文件與格式轉換成鄰接矩陣。 – JLott

回答

1

這裏是代碼,這將有助於你如何讀文件,以及如何從那裏提取值。首先,你必須在做任何其他事情之前正確地做好準備。

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class BufferedReaderExample { 

    public static void main(String[] sm) { 

     BufferedReader br = null; 

     try { 

      String sCurrentLine; 

      br = new BufferedReader(new FileReader("You file path")); 
      String[] xy; 
      // get your points and convert very first line 
      int points = Integer.parseInt(br.readLine()); 
      while ((sCurrentLine = br.readLine()) != null) { 
       xy = sCurrentLine.split("\\s+"); // split by whitespace 
       System.out.println(xy[0] +" : "+ xy[1]); 
       // Do something 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null) 
             br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

    } 
} 

編輯: - 如果你想兩點之間畫線>。你必須利用drawline()方法。它應該像下面這樣。我也給你鏈接如何使行是java。

1. Graphic drawLine() API

2. How to draw lines in Java

@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    for (Line line : lines) { 
     g.setColor(line.color); 
     g.drawLine(line.x1, line.y1, line.x2, line.y2); 

    } 
} 

如果您有任何問題,讓我們知道。

+0

我編輯我的問題,所以你可能會明白我在掙扎。我不知道如何修改我的程序來在文件中的點之間畫線。目前該計劃只是繪製點。 – JLott

+0

更改從增強的for循環到正常for循環。然後從點列表中獲取最後使用的(i-1)點。然後,從p1.x,p1.y畫線到p2.x,p2.y. – 2013-02-04 18:15:50

+0

@Legend她是學生,我只是向她展示瞭如何完成它。我認爲它不好給OP做好準備。她需要學習。然而,你提出的觀點我同意這一點。謝謝。 – Smit