【问题标题】:Java - draw lines reading points in a txt fileJava - 在txt文件中画线读取点
【发布时间】:2014-04-21 14:43:19
【问题描述】:

我试图了解 Java 尤其是 Swing 的工作原理,因此我制作了一个用于在 JPanel 上绘制手绘线的应用程序。然后使用保存按钮,我可以记住一些信息(当用户开始和结束绘制线时,哪些点构成了线等)。

我以这种方式保存信息:

编辑我删除了无用的东西,只是在不同的信息之间放了一个空格..

line 04:54:34:365 04:54:35:167 [java.awt.Point[x=249,y=114], java.awt.Point[x=249,y=114], java.awt.Point[x=207,y=87], java.awt.Point[x=207,y=87]]

这是一条线的例子;你能建议我如何解析文件以将线条画回 JPanel 吗?我认为它应该像“对于每一行,追随'点'字并获取数据并绘制它”。这是正确的方法吗?我已经设法从文件读取和写入文件,所以问题在于只取行的那一部分并将其作为绘图函数的输入。

这是我从文件(.txt)中读取的方式:

List<String> lines = Files.readAllLines(Paths.get(file.getPath()), Charset.forName("UTF-8"));

谢谢!

【问题讨论】:

  • 只有一行...
  • 这是一个例子,否则它会是一整页的坐标;)
  • 每行应该有一个点。 89 122 99 124 之类的东西,然后你可以用 StringTokenizer 将它分成 4 个标记并初始化一行。
  • 这是关于手绘线的,所以我必须记住线的每一点..我可以为一条线有很多坐标..我编辑了关于保存字符串的问题..

标签: java swing list


【解决方案1】:

我会做一些类似于 AnubianNoob 的建议的事情,但在您的文本文件的每一行上,每条绘制的“线”,甚至由许多点组成。即使您不想这样做,最简单的方法是仅打印出数字而不是整个对象。

创建两行后,文本文件可能如下所示:

249 114 207 87 230 110
115 240 90 210 112 245

现在您可以像以前一样读取所有行,然后用空格(或您想在值之间放置的任何字符)分割每一行

//for each line in lines
String[] values = line.split(" ");
//Note we are adding 2 to i in each loop, because the 2nd value will be y value
for (int i = 0; i < values.length; i+=2)
{
    //Now just recreate the points
    //values[i] = x, values[i+1] = y
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多