当我点击 JavaFX 按钮时,如何去除小的展开效果?还有我怎样才能让它像菜单按钮一样工作(当我按下它以保持聚焦状态直到我按下另一个“菜单”按钮时)。有没有办法将节点分组到同一焦点?
最佳答案
三个问题一个的价格;-)
How can I remove the small expand effect when I click on a JavaFX button?
当你点击按钮时它有焦点,当它有焦点时,它被聚焦环包围,使它稍微大一些。这个效果是通过 css 触发的。
默认 css 位于 caspian.css 中,该文件位于 JavaFX 运行时安装的 jfxrt.jar 中。 相关摘录在这里:
.button {
-fx-skin: "com.sun.javafx.scene.control.skin.ButtonSkin";
-fx-background-color: -fx-shadow-highlight-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
-fx-background-insets: 0 0 -1 0, 0, 1, 2;
-fx-background-radius: 5, 5, 4, 3;
...
.button:focused {
-fx-color: -fx-focused-base;
-fx-background-color: -fx-focus-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
-fx-background-insets: -1.4, 0, 1, 2;
-fx-background-radius: 6.4, 5, 4, 3;
}
要消除轻微的扩展效果,请创建您自己的样式表。在您的样式表中,将其分配给您的场景,并将聚焦和未聚焦按钮的背景插图和半径设置为相同的值。这是一个tutorial关于 JavaFX CSS 和非常有用的 JavaFX CSS reference guide .
how can I make it work like an menu button (when I press it to remain in focused state untill I press another "menu" button).
我不太明白这个问题 - 这是按钮的默认行为。也许你正在混合焦点和 ARM 状态,实际上想要一个 ToggleButton ?
Is there a way to group nodes into the same focus?
目前尚未内置到平台中。您可以为布局 Pane 编写自己的 FocusModel 类,它会记住 Pane 中具有焦点的最后一个控件,并在 Pane 重新获得焦点或类似事件时再次重新分配焦点。不过,这将是自定义代码。您需要使用的概念是节点的焦点属性、节点 requestFocus api(有时通过在 Platform.runLater 中执行以确保您覆盖默认焦点处理而延迟)以及(我认为)默认焦点顺序取决于的事实按照父项中子项的顺序。
关于java - 如何删除按钮单击 JavaFX 的展开效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11007523/