我想知道是否有任何方法可以通过编程方式设置JavaFX ComboBox的样式。我试图使用方法setStyle(String);
并设置按钮样式,但它不会影响列表
有没有办法做到这一点?
答案 0 :(得分:0)
您可以更改(例如)ComboBox
中列表单元格的文本填充颜色,如下所示:
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.control.ListView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.util.Callback;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group(), 200, 200);
ComboBox<String> myComboBox = new ComboBox<String>();
myComboBox.getItems().addAll("A", "B", "C", "D", "E");
myComboBox
.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> param) {
final ListCell<String> cell = new ListCell<String>() {
{
super.setPrefWidth(100);
}
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (item != null) {
setText(item);
if (item.contains("A")) {
setTextFill(Color.RED);
} else if (item.contains("B")) {
setTextFill(Color.GREEN);
} else {
setTextFill(Color.BLACK);
}
} else {
setText(null);
}
}
};
return cell;
}
});
Group root = (Group) scene.getRoot();
root.getChildren().add(myComboBox);
stage.setScene(scene);
stage.show();
}
}
答案 1 :(得分:0)
我认为更好的方法是在代码中设置CSS ID或CSS类。例如你的comboBox。
{"recentEvents": {"modifyDate": {"operation": "greaterThanDate","options": [{"name": "date","value": ["03/21/2018 17:29:44"]}]}}}
或设置课程:
yourComboBox.setId("fancybox");
然后在CSS中设置它们的样式。 然后你可以在comboBox上设置几乎所有的样式。
示例:
yourComboBox.getStyleClass().clear();
yourComboBox.getStyleClass().add("fancyboxes");
有许多不同的&#34;扩展&#34;您可以在#fancyBox之后添加什么,然后设置样式。 (扩展我的意思是&#34; .cell&#34; #fancyBox之后) 这可以帮到你。继续搜索。