三个问题一个的价格;-)
单击 JavaFX 按钮时如何消除小展开效果?
当您单击该按钮时,它会获得焦点,当它获得焦点时,它会被对焦环包围,这使得它稍大一些。这个效果是通过css触发的。
默认 css 位于 JavaFX 运行时安装中的 jfxrt.jar 中的 caspian.css 中。
相关摘录在这里:
.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 http://docs.oracle.com/javafx/2/css_tutorial/jfxpub-css_tutorial.htm关于 JavaFX CSS 和永远有用的 JavaFX CSS参考指南 http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html.
我怎样才能让它像菜单按钮一样工作(当我按下它以保持聚焦状态直到我按下另一个“菜单”按钮时)。
我不太明白这个问题 - 这是按钮的默认行为。也许您正在混合焦点和手臂状态,并且实际上想要一个切换按钮 http://docs.oracle.com/javafx/2/ui_controls/toggle-button.htm?
有没有办法将节点分组到同一焦点?
目前尚未内置到平台中。您可以为布局窗格编写自己的 FocusModel 类,该类会记住窗格中具有焦点的最后一个控件,并在窗格重新获得焦点或类似情况时再次重新分配焦点。不过,这将是自定义代码。您需要使用的概念是节点的 focus 属性、节点 requestFocus api(有时通过在 Platform.runLater 中执行延迟以确保覆盖默认焦点处理)以及(我认为)默认焦点顺序取决于的事实按照父级中子级的顺序。