使用透明PNG文件时,请注意javaFX中的GUI工作(单击或拖动到照片)

时间:2015-02-03 05:54:16

标签: javafx

(英语表达对我来说非常难。如果有人有奇怪的表达,请纠正我的写作。)

请注意,如果您在进行可拖动或点击操作时想要使用PNG文件。

有时透明PNG 会影响拖动和点击操作。 因此,如果要在拖动或单击操作工作时使用PNG,请使用不透明PNG。

上周,我试图在tilepane上制作一个可拖动的imageview。 它看起来像照片拼图。 我应用了点击和拖动动作。 然后它有时工作,有时没有工作。 我想知道为什么会这样。 所以我一遍又一遍地试验。 最后,我可以提出一些线索。 一个透明PNG具有不透明部分和透明部分。 因此,单击不透明零件时任务有效,单击透明零件时无效。让我们看看我的答案下面的细节。

1 个答案:

答案 0 :(得分:0)

两种结果都不同。有一点指向 imageview ,另一件事指向hbox(imageview的父级)。

1.点击PNG的不透明部分

@FXML
private void tile1MouseClicked(MouseEvent event) {
   System.out.println("result : " + event.getTarget()); 
}

结果:ImageView @ 7afa16c0

2.点击PNG的透明部分

@FXML
private void tile1MouseClicked(MouseEvent event) {
   System.out.println("result : " + event.getTarget()); 
}

结果:HBox @ 3f30efe6

String[] imageName = {"slide1.png", "slide2.png", "slide3.png", "slide4.png", 
                        "slide5.png", "slide6.png", "slide7.png", "slide8.png"};
    Image img = null;
    for (int i = 0; i < imageName.length; i++) {
        try {
            img = new Image(getClass().getResourceAsStream(imageName[i]));   
        } catch (Exception e) {
            System.out.println("exception : " + e);
        }
        ImageView imageview = new ImageView(img);
        imageview.setFitWidth(20);
        imageview.setFitHeight(20);

        HBox hbox = new HBox();
        hbox.getChildren().add(imageview);
        tile1.getChildren().add(hbox);
}