从文件中绘制线条

时间:2018-01-05 09:56:21

标签: java file user-interface graphics 2d

我需要制作GUI应用程序,该应用程序从用户选择的文件中获取坐标,并使用.drawLine与它们形成一条线。我试图将点保存到ArrayList,然后初始化它们,但我不知道如何继续并使其成功。请帮帮我。

文件看起来像这样,可以是任何类型。

  • 2,4,3,8(x1,y1,x2,y2)
  • 8,0,7,20
  • 0,0,800,962

这是最有用的代码。

public class Line extends JPanel {

        ArrayList<Integer> points = new ArrayList<>();

        public Line() {
            points.add(20);
            points.add(40);
            points.add(250);
            points.add(40);
        }

        public void paintComponent(Graphics g) {
            Graphics2D g2d = (Graphics2D) g;

            for (int i = 0; i < points.size(); i++) {
                g2d.drawLine(points.get(i), points.get(i), points.get(i), points.get(i));
                System.out.println(points.get(i));
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

以下是如何读取文件并存储行信息,然后绘制它们的示例。

为方便起见,它使用Graphics2D Shape方法,以便您在阅读文件时直接存储import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Line2D; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; public class Line extends JPanel { ArrayList<Shape> lines = new ArrayList<>(); public Line() { try (Scanner scanner = new Scanner(new File("path_to_your_file"))) { while (scanner.hasNextLine()) { // split the line on the comma separator String[] parts = scanner.nextLine().trim().split("\\,"); // read the coordinates int x1 = Integer.valueOf(parts[0]); int y1 = Integer.valueOf(parts[1]); int x2 = Integer.valueOf(parts[2]); int y2 = Integer.valueOf(parts[3]); // create a Line and store it lines.add(new Line2D.Float(x1, y1, x2, y2)); } } catch (FileNotFoundException e) { e.printStackTrace(); } } public void paintComponent(final Graphics g) { Graphics2D g2d = (Graphics2D) g; // draw all the lines for (Shape line : lines) { g2d.draw(line); } } } 个对象。

/dev/urandom

答案 1 :(得分:0)

首先阅读文件,然后添加到列表中。

此外,它只是绘制圆圈的cos值。当它循环时,如果第一个数字为8,则循环绘制的是(0cbbd9f5-f1bd-11e7-92c0-4d5d3b7d0380) Endpoint response body before transformations: { "Message": "An error occurred and the request cannot be processed.", "Type": "Service" }

这是我的代码段。未经测试但应该可以正常工作:

g2d.drawLine(8,8,8,8);