2015-03-13 84 views
0

我已經創建了一個框架,其中包含一些圖片,我想添加一個效果,當鼠標進入圖片區域時,它會變得更暗或更亮,就像鼠標進入按鈕區域時一樣從FXML文件生成的代碼:爲javafx中的imageview設置效果

public class FrameController implements Initializable { 
@FXML 
private GridPane album; 
ImageView im; 

/** 
* Initializes the controller class. 
*/ 
@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
}  

@FXML 
private void mouseEntered(MouseEvent event) { 
    System.out.println(event.getSource()); 
    im = (ImageView) event.getSource(); 
    Glow selectGlow = new Glow(1.7f); 
    im.setOnMouseEntered(new EventHandler<MouseEvent>() { 

    @Override 
    public void handle(MouseEvent event) { 
    im.setEffect(selectGlow); 
    } 
    }); 
} 

} 

,但我有兩個問題:

1)這是非常緩慢,有時似乎當我上的圖片,因爲效果確實是鼠標處理程序不叫不改變

2)我不知道我應該使用哪種效果爲了在鼠標進入圖片區域時使圖片變暗

回答

1

性能取決於效果。如果你真的只想改變亮度,你可以。 G。使用ColorAdjust這樣的:

public class ImageTest extends Application { 

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

    @Override 
    public void start(Stage primaryStage) { 

     primaryStage.setTitle("Hello World!"); 

     Group root = new Group(); 

     Image image = new Image("http://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Siberischer_tiger_de_edit02.jpg/320px-Siberischer_tiger_de_edit02.jpg"); 


     GridPane gridPane = new GridPane(); 

     gridPane.add(createImageView(image), 0,0); 
     gridPane.add(createImageView(image), 1,0); 
     gridPane.add(createImageView(image), 0,1); 
     gridPane.add(createImageView(image), 1,1); 


     root.getChildren().add(gridPane); 

     primaryStage.setScene(new Scene(root, 800, 600)); 
     primaryStage.show(); 
    } 

    private ImageView createImageView(Image image) { 

     ImageView imageView = new ImageView(image); 

     ColorAdjust colorAdjust = new ColorAdjust(); 
     colorAdjust.setBrightness(-0.5); 

     imageView.addEventFilter(MouseEvent.MOUSE_ENTERED, e -> { 

      imageView.setEffect(colorAdjust); 

     }); 
     imageView.addEventFilter(MouseEvent.MOUSE_EXITED, e -> { 
      imageView.setEffect(null); 
     }); 

     return imageView; 
    } 
} 

enter image description here

+0

感謝您的答覆,影響工作正常,但仍需要一段時間才能生效,我的意思是,當我是一個形象,我需要等待大約一秒鐘圖像變暗 – Yashar 2015-03-13 07:23:52

+0

你的系統是什麼?在我的身上它是即刻,毫不拖延的。 – Roland 2015-03-13 07:31:04

+0

我解決了這個問題,我錯過了部分代碼,再次感謝 – Yashar 2015-03-13 07:53:42