1
我正在制作图片库。我正在使用javafx 8以及GUI的场景生成器。我希望用户可以选择从图库中选择图像:我想在图库中添加可点击和可选的图像。我也想记录那些选择的图像的顺序,即哪一个先被选择,哪一个是最后被选择的。我做了这个画廊,但是我想知道我会怎么做才能使图像可点击并获取图像,并注意到它们的顺序?我不想在图像上使用复选框。如何从javafx中的图库中选择图像?
我正在制作图片库。我正在使用javafx 8以及GUI的场景生成器。我希望用户可以选择从图库中选择图像:我想在图库中添加可点击和可选的图像。我也想记录那些选择的图像的顺序,即哪一个先被选择,哪一个是最后被选择的。我做了这个画廊,但是我想知道我会怎么做才能使图像可点击并获取图像,并注意到它们的顺序?我不想在图像上使用复选框。如何从javafx中的图库中选择图像?
你可以在每个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);
});
}
}
所以我怎么能获得点击的ImageView同时使用setOnMouseClicked为ImageView的不动作事件工作 –
我不得不承认,我不明白你的问题是什么。将处理程序附加到所有图像视图后,每次单击图像时都会调用此处理程序。现在最简单的方法就是从事件对象获取源代码(ImageView),并从中获取包含的图像,然后将其存储在ArrayList中。这个列表的内容然后描述了你点击的顺序。那是你想要的还是我误解了你? – mipa
是的,你是绝对正确的,但setOnMouseClicked不会返回源代码。在给定的代码中,extendedImage是我的类,它扩展了图像类并添加了一个额外的图像ID功能。给定的代码给出错误,我无法通过ActionEven图像作为参数,我不能得到源,,,,,,,, 公共无效的setValue(ActionEvent的图像){ 点击++; ImageView clickedImageView =(ImageView)image.getSource(); extendedImage clickedImage =(extendedImage)clickedImageView.getImage(); int imageId = clickedImage.getId(); clickedImageId.add(imageId); } –