I need to draw lines between in java from a file that is formatted the following way:
5 //Number of lines of points
10 10
23 56
15 34
32 67
76 45
I think I am going to have to set up two arrays and then somehow add the values like that but I am completely lost and really need some guidance.
Any help would be appreciated! The code below is what needs to be modified to draw lines. Right now it just plots the points.
Code:
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);
}
}
}
}
Here is code that will help you how to read file and how to extract values from there. This is first you have to make it correctly before doing any other stuff.
EDIT: –> if you want to draw line between two points. you have to make use of
drawline()method. It should go something like below. I am also giving you link how to make line is java.1. Graphic drawLine() API
2. How to draw lines in Java
If you have any question let us know.