0

写真を入れたフレームを作りました。「マウスオーバー」時に の前景が明るくなるようにglow effectbuttonのに を追加したいと思います。scencebutton

これが私のFXMLドキュメントです:

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

}

しかし、私には2つの問題があります:

1)非常に遅く、効果が変わらないため、画像上にいるときにマウスハンドラーが呼び出されないように見えることがあります

2) マウスが画像領域に入ったときに画像を暗くするには、どのエフェクトを使用すればよいかわかりません。

4

1 に答える 1

1

性能は効果に依存します。本当に明るさだけを変更したい場合は、たとえば次のように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;
    }
}

ここに画像の説明を入力

于 2015-03-13T06:31:40.727 に答える