当前位置: 首页 > 知识库问答 >
问题:

将文本设置为随机颜色

百里飞捷
2023-03-14

我需要一个javafx程序来设置文本的随机颜色和不透明度,我不知道该怎么做?下面是我的代码示例

Text text1 = new Text();
text1.setText("Java");
text1.setFont(Font.font("Times New Roman", FontWeight.BOLD, FontPosture.ITALIC, 22));
text1.setRotate(90);
gridpane.add(text1, 3, 1);

共有2个答案

庄瀚玥
2023-03-14

像这样:

Text randomColorText(String txt) {
    Text t = new Text(txt);
    Random rng = new Random();
    int c = rng.nextInt();
    int r = c & 255;
    int g = (c >>> 8) & 255;
    int b = (c >>> 16) & 255;
    double op = (c >>> 24) / 255.0;
    t.setFill(Color.rgb(r, g, b, op));
    // or use only r,g,b above and set opacity of the Text shape: t.setOpacity(op);
    return t;
}

请注意,另一个提到Random永远不会返回double==1.0的答案是错误的,它说你不会得到完整的颜色范围。颜色RGB值的范围与double值的范围不同——通常在某一点上,它们最终为0-255范围内的8位值,在某些高端应用程序中,每个通道可能使用16位。你可以从Random获得全套颜色。

您会注意到,对于通常由32位值表示的内容,我避免多次调用随机数生成器。(微优化:调用nextInt完成了nextDouble的一半工作,我们只需要调用一次。我通常会将Random的实例保存为静态变量,而不是每次调用该方法时都创建一个。java.util.Random是三个安全的。)

吴俊晤
2023-03-14

你可以使用数学。random()生成范围[0,1)内的双精度,因此需要执行以下操作:

text.setOpacity(Math.random ());

颜色需要通过文档进行更多的挖掘,但可以通过以下方式完成:

text.setFillColor.color(Math.random(),Math.random(),Math.random ());

setFill来自ShapeText继承自它。setFill接受一个Paint,其中Color是最简单的实现。Color.color(double, double, double)接受范围为[0,1]的双精度的rgb值。

学习如何浏览文档,你将能够在未来很快自己找到这些东西!

注:不透明度/rgb颜色都是[0,1]范围的两倍,其中Math。random()产生的值在[0,1]范围内。如果你不熟悉这个符号,这意味着数学。random()永远不会产生1,只会产生一个可能精度小于1的数字。这意味着用这种方法你永远不会得到100%完全不透明的/r/g/b,但实际上你可能看不出区别,所以最好使用不太复杂的方法。

注2:javafx.scene.paint.Color#color实际上提供了一个包含不透明度的四参数构造函数,但我建议将Text节点本身的不透明度设置为如上,而不是Paint的不透明度。

 类似资料:
  • 这样,它就显示了提示和错误。而且它还有帮助器文本。这是它对密码设置很有用的地方。例如。在某人输入密码之前,ErrorText显示为HelperText,通过不同的颜色区分(根据示例,用灰色而不是红色)。 当我查看TextInputLayout时,它确实有两个函数 和 P/S:我知道如何通过样式设置来更改ErrorText颜色。但这没有帮助,因为它不能在应用程序运行时动态更改(例如,将状态从erro

  • 我一直在使用JMeter,我知道< code>__Random和< code>__RandomString函数。我需要选择一个随机选项并将其存储在一个变量中,因为它将被用作多个调用的参数路径的一部分。例如: < code > http://www . example . com/pets/{随机选项,如:猫、狗、鹦鹉}/ 我尝试过这样简单的操作,其中我使用一个随机控制器将变量< code>${qu

  • 如何设置文本字段中文本的颜色?例如,将“你好和谐”字段中的“和谐”字体设置为红色。Android代码实现如下: SpannableStringBuilder ssb=新的SpannableStringBuilder();ssb。setSpan(新的ForegroundColorSpan(getCurrentHintTextColor()),i,i 1,0);

  • 我正在尝试使用客户端将当前服务器的bot角色设置为粉红色。打开(“准备就绪”),但每当我使用当前拥有的内容运行bot时,控制台将返回: 这是我目前使用的代码。我知道我需要在每个公会上进行for循环,但我不确定我将如何做到这一点,我可以使用for或只是a。然而,我找不到这样做的正确方法。 提前感谢任何回复和帮助我留言的人。

  • 问题内容: 我需要创建一个具有指定背景颜色的矩形,在背景上绘制一些图案并将其保存到文件中。我不知道如何创建背景。 我正在使用嵌套循环: 但是,当图像较大时,速度非常慢。 如何以更有效的方式设置颜色? 问题答案: 获取图像的图形对象,将当前绘画设置为所需的颜色,然后调用。