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); } –