我有一个用户界面,包括按钮,文本字段和组合框。 这取决于用户连接,使它们可编辑或不可编辑。 使用Fields很简单,只需:
setEditable(false);
但是comboBox对我来说是一个问题。
当我使用时:
setDisabled(true);
setOpacity(1.0);
组合框是完全可见的,不可编辑(在comboBox中可编辑意味着您编写自己的文本,它会自动设置为false),但组合框中的文本是灰色的。
您是否了解如何使其不可编辑,并使其看起来像editableComboBox。文本仍然可见。
答案 0 :(得分:1)
如果我理解正确,您希望ComboBox不可编辑,但仍然看起来像它可编辑时通常的样子。如果是这样,您可以在JavaFX中使用CSS来修改控件的外观。
对于ComboBox,它在内部使用TextField,它也继承了TextInputControl的CSS,因此您可以修改文本的颜色和其他外观,如JavaFX CSS参考中所述:
-fx-text-fill: black;
来源:http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#textinputcontrol
<强>更新强>
我能够建立一个小样本应用程序,使用CSS将背景颜色设置为与可编辑的组合框相同:
package cssstyling;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.scene.control.ListCell;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class CssStyling extends Application {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Scene scene = new Scene(root, 500, 500, Color.BLACK);
ComboBox b = new ComboBox();
b.setButtonCell(new ListCell());
b.getButtonCell().setStyle("-fx-background-color: white;");
b.setLayoutX(220);
b.setLayoutY(20);
root.getChildren().add(b);
primaryStage.setTitle("JavaFX Scene Graph Demo");
primaryStage.setScene(scene);
primaryStage.show();
}
}
希望它有用!
答案 1 :(得分:0)
CSS文档描述了Node可能具有的伪类。这包括.disabled伪类。因此,您应该在其.dusabled伪类中为禁用的控件提供所需的文本填充。