【发布时间】:2017-10-05 22:06:29
【问题描述】:
我试图在 setter 中加粗一些文本,但是当它显示时,它不起作用。我将直接跳入一些代码,这样才有意义...
private static class Spell {
private final String name;
private final String school;
private final String display_class;
//etc.
.
Text t = new Text("TEST: ");
t.setStyle("-fx-font-weight: bold;");
this.name = name + "\n\n";
this.school = school + "\n";
this.display_class = t + display_class + " " + spell_level + "\n";
//etc.
显示列表:
if (!newValue.isHeader()) {
tooltip.setText(newValue.getName() + newValue.getSchool() + newValue.getDisplay_Class() //etc.
文本在 ScrollPane 中显示为 Text 对象:Text tooltip = new Text();
列表显示Level: 0 Range: 25ft 等值。使用此设置,是否可以仅将"Level:" 和"Range:" 部分加粗?目前,打印t时显示的是Text[text="TEST: ",x=0.0,y=0.0, alignment=LEFT, origin=BASELINE, boundsType=LOGICAL...等。等等,但是当将t 添加到窗格并以这种方式显示时,它会正确显示为粗体。我现在不知道该怎么办。
【问题讨论】:
-
我能想到的唯一方法是这样的:stackoverflow.com/a/34230669/4167500 另外,如果你不喜欢 css,你可以设置 text Font like :setFont(Font.font("Aria", FontWeight.BOLD, 20));
-
TextFlow 显示与以前相同的额外垃圾,但仍然没有粗体。至于设置字体,那不就是为整个列表设置它而不是能够指定一个单词吗?编辑:我也必须在几分钟后到达某个地方,所以当我回来时,我会回复你和其他看到这个的人。提前致谢!
-
您必须将您的文本分成较小的部分,例如分成两部分,第一部分是粗体,第二部分是常规。之后,当您指定它们的字体(或只是粗体样式)时,您需要将它们显示为一个实体,当然您可以通过使用 FlowPane、HBox 等任何布局来实现这一点,但 TextFlow 是此类工作的最佳选择。正如您将在链接的示例中看到的那样,样式被设置为每个文本部分,而不是整个 TextFlow。这就是它将显示的内容:prntscr.com/gtt3xt
-
Tooltip的所有文本都必须是粗体或没有。我猜你可以创建一个自定义Tooltip并覆盖此行为。 -
@JKostikiadis 这实际上为我修复了它。最初,当我不得不离开时,我花了大约 2 分钟的时间,这让我无处可去。现在,在有时间再玩它之后,它奏效了。我将 TextFlow 设置在 ScrollPane 中,并将文本分成 2 个 Text 对象,一个不加粗,最后看起来我想要的样子。非常感谢你做的这些。如此看似简单的事情竟然花了这么长时间才完成,真烦人……