如何摆脱JavaFX中的重点突出显示

今天,有人问我是否知道摆脱JavaFX控件(分别是按钮)的焦点突出的方法:



button_hover

有关此问题的大多数文章和提示建议添加:

.button:focused {
    -fx-focus-color: transparent; 
}

但是使用这种样式,仍然会留下这样的光芒:

button_glow

为了摆脱这种光芒,通常还建议额外使用-fx-background-insets

.button:focused {
    -fx-focus-color: transparent; 
    -fx-background-insets: -1.4, 0, 1, 2;
}

但这导致呈现的按钮没有外部边框:

button_insets

与默认按钮样式相比:

纽扣

这仍然是一种“突出”。

(为什么实际上有4个插入值?)

看一下modena.css定义的JavaFX默认样式,可以modena.css更多信息:

/* A bright blue for the focus indicator of objects. Typically used as the
* first color in -fx-background-color for the "focused" pseudo-class. Also
* typically used with insets of -1.4 to provide a glowing effect.
*/
-fx-focus-color: #f25f29;
-fx-faint-focus-color: #f25f2933;

显然,不仅有一种焦点颜色-fx-focus-color而且还有-fx-faint-focus-color ,它旨在创建这种发光效果(设置-fx-focus-color:transparent;时仍然存在)。

仔细查看.button:focused伪类(在modena.css ):

.button:focused {
    -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-inner-border, -fx-body-color; 
    -fx-background-insets: -2, -0.3, 1, 2;
    -fx-background-radius: 7, 6, 4, 3;
}

玩一些极端的色彩可以揭示这种安排:

.button:focused {
    -fx-focus-color: red;
    -fx-faint-focus-color: green;
    -fx-inner-border: blue;
    -fx-body-color: orange;

    -fx-background-color: -fx-faint-focus-color, -fx-focus-color, -fx-inner-border, -fx-body-color; 
    -fx-background-insets: -2, -0.3, 1, 2;
    -fx-background-radius: 7, 6, 4, 3;
}


button_hover_style

回到主题可能是删除焦点突出显示的一个聪明方法是对.button:focus也使用默认按钮样式(其他控件使用相同的方法):

.button:focused {
    -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color; 
    -fx-background-insets: 0, 1, 2;
    -fx-background-radius: 5, 4, 3;
}

翻译自: https://www.javacodegeeks.com/2014/11/how-to-get-rid-of-focus-highlighting-in-javafx.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX,ImageView用于显示图像。如果您的ImageView没有显示图像,可能是以下几个原因之一: 1. 图片路径错误:请确保您提供的图片路径是正确的。可以使用绝对路径或相对路径来指定图片的位置。例如,如果图片位于与您的Java文件相同的目录,您可以使用相对路径来指定图片的位置。 2. 图片不存在:请检查您指定的图片是否存在于指定的路径。您可以尝试打开该图片文件以确认它是否可访问。 3. 图片加载失败:有时候,图片加载可能会失败。您可以通过捕获异常来检查是否出现了加载错误,并根据需要采取适当的措施。 以下是一个简单的示例代码,显示如何在JavaFX使用ImageView来显示图片: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class ImageViewExample extends Application { @Override public void start(Stage primaryStage) { // 创建一个ImageView对象 ImageView imageView = new ImageView(); try { // 加载图片 Image image = new Image("path/to/your/image.jpg"); // 设置ImageView的图片 imageView.setImage(image); } catch (Exception e) { e.printStackTrace(); } // 创建一个StackPane来放置ImageView StackPane root = new StackPane(); root.getChildren().add(imageView); // 创建一个Scene并将根节点添加到其 Scene scene = new Scene(root, 300, 200); // 设置舞台的场景并显示舞台 primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 确保将`"path/to/your/image.jpg"`替换为实际的图片路径。如果图片存在且路径正确,您应该能够看到图片显示JavaFX窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值