首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReadOnly ComboBox

ReadOnly ComboBox
EN

Stack Overflow用户
提问于 2013-05-29 21:06:07
回答 2查看 2.5K关注 0票数 0

我有一个用户界面,有按钮,文本字段和组合框。它们是否可编辑取决于用户连接。使用Fields很简单,只需:

代码语言:javascript
复制
setEditable(false);

但是comboBox对我来说是个问题。

当我使用:

代码语言:javascript
复制
setDisabled(true);
setOpacity(1.0);

组合框是完全可见的,不可编辑(在combobox中可编辑意味着您可以自己编写文本,它会自动设置为false),但组合框中的文本是灰色的。

你有没有办法让它不可编辑,让它看起来像一个editableComboBox。文本仍应可见。

EN

回答 2

Stack Overflow用户

发布于 2013-05-29 21:25:20

如果我没理解错的话,您希望ComboBox不可编辑,但仍然与可编辑时的外观相同。如果是这样,您可以在JavaFX中使用CSS来修改控件的外观。

对于ComboBox,它在内部使用了一个TextField,它也继承了TextInputControl的CSS,因此您可以修改文本的颜色和其他外观,如JavaFX CSS Reference中所述:

代码语言:javascript
复制
-fx-text-fill: black;

来源:http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#textinputcontrol

更新:

我创建了一个很小的示例应用程序,它使用CSS将背景颜色设置为与可编辑组合框相同:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-05-29 22:23:39

CSS文档描述了Node可能具有的伪类。这包括.disabled伪类。因此,您应该为禁用的控件的.dusabled伪类提供所需的文本填充。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16814732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档