2

プログラムにボタンまたはクリック可能な ImageView が必要です。クリックすると、境界線がイメージビューの形状に表示されるようにしたいと思います。この画像には背景がありませんでしたが、境界線の形状を指定する方法が見つかりません。例えば:

ここに画像の説明を入力

この画像には背景がなく、境界線は画像の周りにのみある必要があるため、四角形や円はありません。これは可能ですか?

4

1 に答える 1

5

効果を使用DropShadowして境界線を表示することをお勧めします。

@Override
public void start( final Stage primaryStage )
{
    DropShadow ds = new DropShadow( 20, Color.AQUA );
    ImageView imageView = new ImageView( "http://vignette3.wikia.nocookie.net/forgeofempires/images/b/b8/Castel_del_Monte.png" );

    imageView.setOnMouseClicked( ( MouseEvent event ) ->
    {
        imageView.requestFocus();
    } );

    imageView.focusedProperty().addListener(( ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue ) ->
    {
        if ( newValue )
        {
            imageView.setEffect( ds );
        }
        else
        {
            imageView.setEffect( null );
        }
    });

    final Scene scene = new Scene( 
            new VBox( imageView, 
            new Button( "When you focus on me, the imageview looses its shadow effect" ) ), 
            500, 200 );
    primaryStage.setScene( scene );
    primaryStage.show();
}

imageview がクリックされると、それにフォーカスをリクエストします。これにより、focusProperty変更リスナーがトリガーされ、エフェクトが設定されます。imageview がフォーカスを失うと (TAB を押すか、下のボタンをクリックして)、エフェクトがクリアされます。

于 2015-06-04T05:28:38.743 に答える