我正在尝试制作一个打字游戏,我为用户输入创建了一个文本字段,并尝试制作游戏,以便文本字段的最后一个字符是红色的,如果它不匹配要键入的单词中的相应字符。以下是我目前所掌握的相关节点的类型。
java prettyprint-override">Label wordsToType = new Label();
TextField userInput = new TextField();
StringBuilder wordsTyped = new StringBuilder();
TextField lastChar = new TextField();
userInput.setOnKeyReleased(e -> {
wordsTyped.append(userInput.getText()); // words typed is a string builder of what is in userInput
if (wordsTyped.toString().charAt(wordsTyped.length() - 1) - wordsToType.getText().charAt(wordsTyped.length() - 1) != 0) {
lastChar.setText(e.getText());
lastChar.setStyle("-fx-text-fill: red; -fx-font-size: 16px;");
wordsTyped.setLength(wordsTyped.length() - 1); // deletes last char from wordsTyped
userInput.setText(wordsTyped.toString() + lastChar.getText());
userInput.end();
}
wordsTyped.delete(0, wordsTyped.length());
});
如评论中所述,您可以使用RichTextFX突出显示具有不同样式的输入文本。下面是一个示例代码:
Java:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.fxmisc.richtext.StyleClassedTextField;
import org.fxmisc.richtext.StyledTextField;
import org.fxmisc.richtext.model.StyleSpans;
import org.fxmisc.richtext.model.StyleSpansBuilder;
import java.util.Collection;
import java.util.Collections;
public class HighlightedTextFieldExample extends Application {
@Override
public void start(Stage stage) {
StyledTextField<Collection<String>, Collection<String>> textField = new StyleClassedTextField();
textField.lengthProperty().addListener((observableValue, oldValue, newValue) -> {
if (newValue > 0) {
StyleSpans<Collection<String>> styleSpans = new StyleSpansBuilder<Collection<String>>()
.add(Collections.emptyList(), newValue - 1) // no style (leading characters)
.add(Collections.singleton("last-character"), 1) // add a style class for the last character
.create();
textField.setStyleSpans(0, styleSpans);
}
});
textField.setPrefWidth(400);
Scene scene = new Scene(textField);
scene.getStylesheets().add(HighlightedTextFieldExample.class.getResource("highlighting.css").toExternalForm());
stage.setScene(scene);
stage.setTitle("Last Character Highlighting Example");
stage.show();
}
public static void main(String[] args) {
launch();
}
}
CSS 样式文件(荧光笔.css
):
.last-character {
-fx-fill: red;
}
输出:
我在javaFX中有一个文本字段,在该字段中键入的任何内容都必须以蓝色显示,这可以通过css实现吗?如果是,那么如何?
问题内容: 示例代码: 我想更改最后一个字母的颜色,在这种情况下为“ g”,但我需要使用CSS的解决方案,不需要JavaScript解决方案。 我逐个字母显示字符串,我不能使用静态解决方案。 问题答案: 不使用JavaScript,您唯一的选择是: 编辑您的小提琴链接 : 我不太确定为什么您说您不需要JavaScript解决方案,因为您已经有了很多解决方案。无论如何,在此示例中,您只需要进行一些小
我对这两个都不熟悉 在我所有的表单中,textField的下划线都显示为蓝色。我想把它换成其他颜色。我使用的代码就像。。。 无法理解如何实现这一点。 注意:我知道这里有一个类似的问题,在flifter中更改TextField的下划线。但是,在那里也没有完全解决。另外,还有一个链接看起来与我的类似,它在这里使用appcompat v7更改EditText底线颜色,但实际上是属于Android开发的,
问题内容: 我试图 建立一个解释器,所以我想知道如何 实时更改文本的颜色。例如,我在文本字段中输入的单词是: 几秒钟后,单词变成绿色。 可能吗? 问题答案: package test;
我在java中模拟处理器计数器时遇到了一个问题。例如,我想从0到6进行计数,并在文本字段中显示计数的当前值(0、1、2、3、4、5、6)。当我点击“计数”按钮时,我的程序冻结了片刻,在文本字段中计数后,我只能看到数字6。我想在计数时看到其他数字。以下是我的部分代码: 我能用它做什么?谢谢你帮助我。
我想在TextField中更改字体颜色。我找到了、来更改背景和边框的颜色,但没有找到文本的颜色。