2016-04-25 46 views
1

我正在制作图片库。我正在使用javafx 8以及GUI的场景生成器。我希望用户可以选择从图库中选择图像:我想在图库中添加可点击和可选的图像。我也想记录那些选择的图像的顺序,即哪一个先被选择,哪一个是最后被选择的。我做了这个画廊,但是我想知道我会怎么做才能使图像可点击并获取图像,并注意到它们的顺序?我不想在图像上使用复选框。如何从javafx中的图库中选择图像?

回答

0

你可以在每个ImageView的添加setOnMouseClicked处理程序。

这里是我的意思一个代码示例:正如我说我也想说明点击图像序列

public class ClickableImage extends Application { 

    private ArrayList<String> clickedImages = new ArrayList<>(); 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) {  
     String imgUrl = getClass().getResource("image.png").toExternalForm(); 
     assert imgUrl != null; 
     Image img = new Image(imgUrl); 
     assert img != null; 

     BorderPane root = new BorderPane(); 
     ImageView imgView = new ImageView(img); 
     imgView.setUserData(imgUrl); 
     root.setCenter(imgView); 

     Scene scene = new Scene(root, 600, 400); 

     primaryStage.setScene(scene); 
     primaryStage.setTitle("ClickableImage"); 
     primaryStage.show(); 

     //------------- 

     imgView.setOnMouseClicked(e -> { 
      String clickedImgUrl = (String)((ImageView)e.getSource()).getUserData(); 
      System.out.println("Image was clicked: " + clickedImgUrl); 
      clickedImages.add(clickedImgUrl); 
     });     
    } 
} 
+0

所以我怎么能获得点击的ImageView同时使用setOnMouseClicked为ImageView的不动作事件工作 –

+0

我不得不承认,我不明白你的问题是什么。将处理程序附加到所有图像视图后,每次单击图像时都会调用此处理程序。现在最简单的方法就是从事件对象获取源代码(ImageView),并从中获取包含的图像,然后将其存储在ArrayList中。这个列表的内容然后描述了你点击的顺序。那是你想要的还是我误解了你? – mipa

+0

是的,你是绝对正确的,但setOnMouseClicked不会返回源代码。在给定的代码中,extendedImage是我的类,它扩展了图像类并添加了一个额外的图像ID功能。给定的代码给出错误,我无法通过ActionEven图像作为参数,我不能得到源,,,,,,,, 公共无效的setValue(ActionEvent的图像){ 点击++; ImageView clickedImageView =(ImageView)image.getSource(); extendedImage clickedImage =(extendedImage)clickedImageView.getImage(); int imageId = clickedImage.getId(); clickedImageId.add(imageId); } –

相关问题