java - 如何删除按钮单击 JavaFX 的展开效果?

标签 java css button javafx-2 fxml

当我点击 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/

相关文章:

java - Mysql与本地主机连接正常但无法连接IP地址

javascript - 如何创建即使缩放也能正确调整大小的 1px 边框折叠表格网格

css - Bootstrap 进度条圆圈不响应所有设计

android - 自定义按钮样式部分应用

ios - 如何迭代数组来初始化按钮?

java - 用显式等待替换隐式等待(selenium webdriver 和 java)

Java - 如何根据元素的属性分隔列表

java - Java中获取反转整数

javascript - 将新内容加载到响应式 slider 中

iphone - 如何添加清除按钮 UITextfield?