【发布时间】:2017-07-06 14:45:27
【问题描述】:
我正在制作一个纸牌游戏(耐心/纸牌/克朗代克),其中我使用了 JavaFX 的拖放功能。为了显示我正在拖动的卡片的幻影图像,我使用了 Dragboard。
Dragboard db;
db.setDragView(source.getImage());
这一切都可以正常工作,但我不知道如何解决整个堆栈的拖动问题。(多张卡片相互叠加,只有每张卡片的顶部可见)每叠卡片都存储在一个arraylist 但由于我一次只能将 1 个图像添加到拖动板,所以我被卡住了。
所以快速的问题:
- 有没有办法将多个图像添加到拖动板?
- 或者是 可以用另一种方式达到同样的效果吗?
- 或者是否可以从多个 Image 对象中创建 1 个 Image 对象以 将此新图像放在拖动板上?
dragDetected 事件处理程序:
/*
On dragDetected check the source of the event, copy to clipboard and show a ghost image
*/
private void dragDetected(MouseEvent mouseEvent) {
Dragboard db;
ClipboardContent cc;
if(mouseEvent.getSource() instanceof CardPane){
CardPane source = (CardPane) mouseEvent.getSource();
cc = new ClipboardContent();
db = source.startDragAndDrop(TransferMode.MOVE);
if(source.getCard() != null) {
//IF from stacks or nextCards
if (stacks.contains(source) || nextCards.contains(source)) {
db.setDragView(source.getCard().getImage());
cc.putString(String.valueOf(source.getCard().getNumber()));
} else {
//PLACE MULTIPLE IMAGES TO THE DRAGBOARD HERE
}
db.setContent(cc);
source.setVisible(false);
}
}
}
【问题讨论】:
-
从每个图像中创建一个
ImageView,将图像视图添加到某个适当的窗格,然后snapshot该窗格以获取图像。 -
哇,我真的做到了。绝妙的解决方案!