Label
(또는 다른 노드)을 완전 복사 할 수 있으므로 동일한 속성 값을 갖는 새로운 Label
개체가 생성됩니다 Dragboard
에 넣으시겠습니까?Javafx : 드래그하여 창을 복사하여 붙여 넣기하여 복사하십시오.
이 기능을 구현하고 싶습니다. 어떤 위치에서 레이블을 끌어다 놓습니다 (Pane
). 같은 속성 값을 가진 새 Label
개체가 놓기 위치의 창에 만들어집니다.
Label
(또는 다른 노드)을 완전 복사 할 수 있으므로 동일한 속성 값을 갖는 새로운 Label
개체가 생성됩니다 Dragboard
에 넣으시겠습니까?Javafx : 드래그하여 창을 복사하여 붙여 넣기하여 복사하십시오.
이 기능을 구현하고 싶습니다. 어떤 위치에서 레이블을 끌어다 놓습니다 (Pane
). 같은 속성 값을 가진 새 Label
개체가 놓기 위치의 창에 만들어집니다.
알다시피, Label
은 Java Cloneable
인터페이스를 구현하지 않으므로 딥 복사 자체에 내장되어 있지 않으며 Node
도 아닙니다. 당신은 Label
를 확장하고 Cloneable
를 구현하고 그 클래스에 clone
메소드를 오버라이드 (override), 당신은뿐만 아니라 깊은 복사 할 Node
다른 모든에 대해 그렇게 자신의 클래스를 만들 수
, 이것은 가장 강력한 솔루션이지만, 수도 너보다 더 많이있어.
다른 옵션은이 아니므로 그냥 그 방법에 문제가있을 수 있습니다
Label newLabel = new Label(oldLabel.getText(), oldLabel.getGraphic());
주 같은 것처럼 간단 할 수있는 동일한 특성을 가진 새로운 라벨을 만드는 것입니다 true 딥 (deep) 복사본, newLabel 및 oldLabel이 동일한 그래픽 노드를 참조합니다. 동일한 그래픽 노드를 장면에 두 번 추가하는 데 문제가있을 수 있습니다. 더 나은 사본
ImageView oldGraphic = (ImageView) oldLabel.getGraphic();
Label newLabel = new Label(oldLabel.getText(), new ImageView(oldGraphic.getImage());
이 여전히 진정한 딥 카피가 아니라 당신이 원하는대로 당신이 거기에 안전 해요, 그래서 어떤 규칙이 여러 번 같은 장면에 같은 Image
추가에 대해이없는 것처럼 뭔가를 할 수 . 이런 종류의 접근법은 Labels에서는 괜찮습니다. 단 두 줄 (하나의 짝수로 붕괴 될 수도 있지만 가독성을 높이기 위해갔습니다)이지만 더 복잡한 유형의 노드는 실제로 번거로울 수 있습니다. 그냥 레이블이라면 괜찮습니다. 그렇지 않으면 필요한 모든 복사를 새로운 clone
방법으로 캡슐화하는 것이 좋습니다.