从路径值创建路径?

时间:2012-04-18 07:14:52

标签: javafx javafx-2

我可以使用其值创建路径吗?

 Path p=new Path();
 p.getElements().add(new MoveTo(mouse.getX(), mouse.getY()));
 System.out.Print(p);

这将打印

  

路径@ 29f12030

我可以将其转换为路径吗?

2 个答案:

答案 0 :(得分:1)

您已经创建了一条路径,它仍然是一条路径,您无需转换它。

当您调用System.out.print(p)时,您调用toString对象上的默认p函数,该函数会打印对您的路径的内部Java引用(例如Path@29f12030)。 如果使用自己的实现覆盖默认的toString方法,如下面的示例所示,print语句将显示路径的值。

public class PrintPath extends Application {
  public static void main(String[] args) throws Exception { launch(args); }
  @Override public void start(final Stage stage) throws Exception {
    Path p = new PrintedPath();
    p.getElements().add(new MoveTo(100, 150));
    System.out.println(p);
    stage.setScene(new Scene(new StackPane()));
    stage.show();
  } 

  class PrintedPath extends Path {
    @Override public String toString() {
      StringBuilder b = new StringBuilder();
      for (PathElement e: getElements()) {
        if (e instanceof MoveTo) {
          MoveTo m = (MoveTo) e;
          b.append("M").append(m.getX()).append(" ").append(m.getY()).append(" ");
        }
        // logic to display other path element types could be added here . . .
      }
      return "Path{ " + b.toString() + "}";
    }
  }
}

答案 1 :(得分:1)

我认为您应该详细说明在应用程序架构的上下文中通过网络发送数据的目的。提供一些有关它的基本细节。根据我的理解,您希望通过网络发送Path实例,并能够在另一端处理它。如果是的话,
- 看看serialization API。阅读有关它的帖子"How to transfer objects over network using java"。扩展Path或将其包装到另一个类中,然后实现Serializable   - 或者,请参阅Java Architecture for XML Binding (JAXB)。基本上通过使用它,您可以将对象转换/编组为XML字符串并通过网络传输,然后解组它。这是hello world example   - 或者,实现自己的编码/解码机制来传输Path对象。