2012-04-18 1 views
0

Могу ли я создать Путь, используя его значение?Создать путь от значения пути?

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

Это напечатает

Путь @ 29f12030

может я снова преобразовать это в путь?

ответ

1

Вы уже создали путь, и это все еще путь, вам не нужно его преобразовывать.

При вызове System.out.print(p) вызова функции по умолчанию toString на ваш p объекта, который печатает внутреннюю ссылку на Java для вашего пути (например, [email protected]). Если вы переопределите метод по умолчанию toString с вашей собственной реализацией, как показано в примере ниже, в заявлении на печать будет отображаться значение пути.

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() + "}"; 
    } 
    } 
} 
+0

Я хотел бы знать, возможен ли путь строительства от значения. Затем мы можем отправлять данные по сети неуклюжим способом. –

+1

Как легко сериализованный (в строковый) и десериализованный формат пути, я бы предложил использовать [ SVGPath] (http://docs.oracle.com/javafx/2.0/api/javafx/scene/shape/SVGPath.html). Если вы это сделаете, см. Спецификацию формата строки SVG (http://www.w3.org/TR/SVG/paths.html). – jewelsea

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.

+0

Что я пытаюсь выполнить путь обновления с использованием базы данных ... Таким образом, оба пользователя могут работать на одном чертеже. Короче говоря, совместный рисунок ... Я сначала рассмотрел это, отправив x и y позиции вместе с ходом пути n материал .. но слишком неуклюжий .. Так что я думал, что значения пути передачи должны быть полезны –

 Смежные вопросы

  • Нет связанных вопросов^_^