在javafx中没有背景的情况下在imageview周围设置边框
Set border around imageview with no background in javafx
我想在我的程序中有一个按钮或一个可点击的 ImageView。单击时,我希望有一个边框以图像视图的形状出现。此图像没有背景,但我找不到指定边框形状的方法。例如:
此图片没有背景,边框只能围绕图片,因此不能有矩形或圆形。这可能吗?
您可能更喜欢使用 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();
}
当图像视图被点击时,我们请求聚焦它,这会触发 focusProperty
更改侦听器并设置效果,当图像视图失去焦点时(通过点击 TAB 或点击下面的按钮)效果清除。
我想在我的程序中有一个按钮或一个可点击的 ImageView。单击时,我希望有一个边框以图像视图的形状出现。此图像没有背景,但我找不到指定边框形状的方法。例如:
此图片没有背景,边框只能围绕图片,因此不能有矩形或圆形。这可能吗?
您可能更喜欢使用 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();
}
当图像视图被点击时,我们请求聚焦它,这会触发 focusProperty
更改侦听器并设置效果,当图像视图失去焦点时(通过点击 TAB 或点击下面的按钮)效果清除。