java - 只读组合框

标签 java javafx

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

setEditable(false);

但是组合框对我来说是个问题。

当我使用时:

setDisabled(true);
setOpacity(1.0);

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

您是否知道如何使其不可编辑,并使其看起来像可编辑的组合框。文本仍应可见。

最佳答案

如果我理解正确的话,您希望 ComboBox 不可编辑,但仍然看起来像可编辑时通常的样子。如果是这样,您可以在 JavaFX 中使用 CSS 来修改控件的外观。

对于 ComboBox,它在内部使用 TextField,该 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();
    }

}

希望有用!

关于java - 只读组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814732/

相关文章:

java - 如何正确使用JavaFX MediaPlayer?

Javafx TableView 未从 observableArrayList 加载数据

java - 在 Javafx 中为新的 ListView 条目设置动画

java - 断言失败 : null id sometimes thrown when Hibernate query objects

java - WebSphere : Cannot locate BeanDefinitionParser for element [default-servlet-handler]

java - INSERT INTO 语句自动向从 1000k 开始的 java 整数添加千位分隔符

JavaFX - 打开新窗口时不加载 CSS

java - 如何创建具有跨运行时持续存在的信息的变量

java - JLabel 点击事件

java - 如何创建类的 ArrayList?