Рисование линии между точками в файле

Мне нужно провести линии между 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);
            }
        }

    }

}

person JLott    schedule 01.02.2013    source источник
comment
Я никогда раньше не возился с матрицами смежности, и я так запутался, что сдался. Я опубликую свой код, чтобы сделать это по-другому. Я хотел создать матрицу смежности, чтобы попытаться реализовать найденный алгоритм.   -  person JLott    schedule 02.02.2013
comment
Теперь, где именно вы получаете проблемы?   -  person Smit    schedule 02.02.2013
comment
Я не знаю, как поместить файл такого формата в матрицу смежности.   -  person JLott    schedule 02.02.2013
comment
Похоже, вы неправильно читаете файл и извлекаете эти значения из файла.   -  person Smit    schedule 02.02.2013
comment
Я обновил ответ в соответствии с вашими потребностями. Я надеюсь, что это поможет вам разобраться в вашей проблеме. Удачи   -  person Smit    schedule 04.02.2013


Ответы (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();
            }
        }

    }
}

EDIT: --> если вы хотите провести линию между двумя точками. вы должны использовать метод drawline(). Это должно выглядеть примерно так, как показано ниже. Я также даю вам ссылку, как сделать строку java.

1. Графический API drawLine()

2. Как рисовать линии в 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);

    }
}

Если у вас есть какие-либо вопросы, дайте нам знать.

person Smit    schedule 01.02.2013
comment
Я отредактировал свой вопрос, чтобы вы могли понять, с чем я борюсь. Я не знаю, как мне изменить мою программу, чтобы рисовать линии между точками в файле. Сейчас программа просто рисует точки. - person JLott; 02.02.2013
comment
Переход от расширенного цикла for к обычному циклу for. Затем получите последнюю использованную (i-1) точку из списка точек. Затем проведите линию от p1.x, p1.y до p2.x, p2.y. - person ; 04.02.2013
comment
@Legend Она студентка, и я просто показываю ей, как это можно сделать. Я думаю, что нехорошо давать ОП все готово. Ей нужно учиться. Однако то, что вы сделали, я согласен с этим. Спасибо. - person Smit; 04.02.2013
comment
Спасибо за помощь :) Мне также нравится учиться, поэтому я не спрашивал точное задание, которое заключалось в рисовании линий на основе ближайшего соседа;) Мне просто нужны были основы соединения линий, чтобы я мог изменить их так, как мне нужно . - person JLott; 05.02.2013
comment
@JLott Я рад, что это помогло. Удачи. - person Smit; 05.02.2013