使用RichTextFX,我能够创建一个包含字符串的代码区,并突出显示属于字符串[]关键字数组的所有单词。
我在CodeArea
上方有一个复选框控件,我在我的控制器代码中附加了一个handler()
,因此每当单击复选框时,它都会取消突出显示CodeArea
中所有突出显示的单词。我在取消突出显示(使文本背景为白色)CodeArea
中的文本时遇到了麻烦,因为styleClass是在下面显示的StyleSpans
方法中定义的。现在一切正常,除了我单击复选框时,它不会取消突出显示单词:
FXML:
<HBox>
<CheckBox fx:id="highlightBox" mnemonicParsing="false" prefHeight="25.0" prefWidth="154.0" stylesheets="@styleMain.css" text="Highlight Words" />
</HBox>
<HBox>
<children>
<CodeArea fx:id="codeBox" wrapText="true" prefHeight="240.0" prefWidth="339.0">
</CodeArea>
</children>
</HBox>
Java控制器:
@FXML
CheckBox highlightBox;
@FXML
public CodeArea codeBox;
private static final String[] KEYWORDS = new String[] {
"one",
"two",
"three"
};
private static final String KEYWORD_PATTERN = "\\b(" + String.join("|", KEYWORDS) + ")\\b";
private static final Pattern PATTERN = Pattern.compile("(?<KEYWORD>" + KEYWORD_PATTERN + ")");
public static final String demoText = "one two three four five";
@Override
public void initialize(URL location, ResourceBundle resources) {
//Highlighting Words
codeBox.richChanges().subscribe(change -> {
codeBox.setStyleSpans(0, computeHighlighting(codeBox.getText()));
});
codeBox.replaceText(0, 0, demoText);
highlightBox.setOnAction(new EventHandler < ActionEvent > () {
@Override
public void handle(ActionEvent event) {
codeBox.setStyle("-fx-background-color: blue"); // this should instead change 'highlightKeyWords' background color to white
}
});
...
} //End of initialize
public static StyleSpans < Collection < String >> computeHighlighting(String text) {
Matcher matcher = PATTERN.matcher(text);
int lastKwEnd = 0;
StyleSpansBuilder < Collection < String >> spansBuilder = new StyleSpansBuilder < > ();
while (matcher.find()) {
String styleClass =
matcher.group("KEYWORD") != null ? "highlightKeyWords" :
null; /* never happens */
assert styleClass != null;
spansBuilder.add(Collections.emptyList(), matcher.start() - lastKwEnd);
spansBuilder.add(Collections.singleton(styleClass), matcher.end() - matcher.start());
lastKwEnd = matcher.end();
}
spansBuilder.add(Collections.emptyList(), text.length() - lastKwEnd);
return spansBuilder.create();
}
在处理程序中,我成功地将CodeArea
的背景更改为蓝色,但如果我改为尝试属性Overview.set样式("-fx-backard-填充:蓝色;");
它不会改变任何事情,文字始终突出显示。这是因为我应该引用在computehighlight方法中创建的突出显示关键字。我应该使用类似于highlightKeyWords的东西吗。设置样式(“-fx背景填充:白色”)?
CSS:
.highlightKeyWords{
-fx-font-size:13px;
-fx-background-color: grey;
-fx-background-fill: yellow;
}
在这里,-fx-backend-填充:黄色;
可以很好地突出显示,但是如何在处理程序中将其更改为白色?
使用在代码区定义的“查找颜色”,并使用设置样式进行更改。
首先,只需将CSS id添加到CodeArea
:
<CodeArea id="codeBox" fx:id="codeBox" wrapText="true" prefHeight="240.0" prefWidth="339.0">
</CodeArea>
然后更新CSS如下:
#codeBox {
-keyword-highlight: yellow ;
}
.highlightKeyWords{
-fx-font-size:13px;
-fx-background-color: grey;
-fx-background-fill: -keyword-highlight;
}
然后在您的初始化()
方法中执行
highlightBox.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
codeBox.setStyle("-keyword-highlight: yellow ;");
} else {
codeBox.setStyle("-keyword-highlight: white ;");
}
});
问题: 如何更改UIkit图标的颜色?具体来说,我想更改复选框图标的背景颜色。 这里是指向UIkit表单文档的链接。 我想改变背景的颜色。
问题内容: 我有一个框,当单击框并显示所有选项时,我正在尝试更改选项的背景色。 HTML: CSS: 问题答案: 你需要把对标签,而不是标签… 如果要为每个标签设置样式,请使用css 选择器:
我有一个选择框,当选择框被单击并显示所有选项时,我正在尝试更改选项的背景颜色。
我在我的应用程序中加入了一个ActionBar并更改了背景颜色,如下所示。奇怪的是,ActionBar上文本后面的颜色不会改变。(图片) 我环顾四周,发现了这个:
我想知道如何更改文本视图的背景,因为我正在从站点解析中提取数据。com,但我不能这样做,我正在尝试这样做。 代码 错误 04-30 11:56:59.156 28388-28691/com。实例ronysueliton。patospizzas E/AndroidRuntime﹕ 致命异常:AsyncTask#2进程:com。实例ronysueliton。patospizzas,PID:28388爪
问题内容: 您好,我想做的就是更改复选框的背景颜色。我累了很多事情,但是什么都没用。可以帮忙吗? 问题答案: 我总是使用伪元素并用于更改复选框和单选按钮的外观。它的工作就像一种魅力。 脚步 使用诸如或或等的CSS规则隐藏默认复选框。 使用element 创建一个伪造的复选框,并传递一个空白或不间断的空格; 复选框处于状态时,传递unicode ,即选中标记; 添加样式以使复选框可访问。 完成了 这