【发布时间】:2017-09-17 16:46:57
【问题描述】:
我一直在尝试禁用 javafx.scene.control.ColorPicker 而不会在我的 UI 中调暗它。这意味着我希望它看起来已启用(启用外观),但只是不响应任何命令,也不会在鼠标单击时显示颜色表(实际上已禁用)。根据系统状态,此行为可以与正常行为互换(即,有时颜色选择器会正常运行)。
我尝试了一些选项,但似乎都没有,如下:
1.使用setEditable(boolean):
myColorPicker.setEditable(false);
这不起作用,颜色选择器仍然可以编辑。
2。一起使用setDisable(boolean) 和setOpacity(double):
myColorPicker.setDisable(true);
myColorPicker.setOpacity(1.0f);
这使得颜色选择器实际上不可编辑,并且生成的颜色选择器看起来比使用 setDisable(true) 的颜色要少一些,但仍然不是启用颜色选择器的外观。
3.用空实现覆盖 onMouseClick()、onMousePressed() 和 onMouseReleased():
myColorPicker.setOnMouseClicked(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Mouse clicked.");
}
});
myColorPicker.setOnMousePressed(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Mouse pressed.");
}
});
myColorPicker.setOnMouseReleased(new EventHandler <MouseEvent>() {
public void handle(MouseEvent event) {
System.out.println("Mouse released.");
}
});
上述方法在我的控制台上打印了相应的消息,但颜色选择器仍然响应鼠标单击(显示颜色表并允许选择新颜色)。还尝试覆盖setOnAction(EventHandler<ActionEvent>),但效果相同(除了单击颜色选择器时没有控制台打印)。
这是我的 FXML 的摘录:
<VBox fx:controller="mypackage.ElementConfigWidget"
xmlns:fx="http://javafx.com/fxml" fx:id="root" styleClass="elementConfigPane">
<HBox id="elementInfo">
(...)
<ColorPicker fx:id="elementColor" styleClass="elementColor" />
</HBox>
(...)
</VBox>
这是我的 CSS 摘录:
.elementColor {
-fx-cursor: hand;
-fx-background-color: #fff;
-fx-focus-color: transparent;
-fx-faint-focus-color: transparent;
-fx-pref-width: 50.0;
}
我实际上希望setEditable(boolean) 能够通过保持元素外观并忽略输入操作来解决我的问题。我错过了什么?
非常感谢!
【问题讨论】:
标签: javafx-2 color-picker