如何在JavaFX中使用TextArea背景?

时间:2018-08-10 13:09:26

标签: javafx textarea

我有一个带有透明背景框架的图像,我希望将其作为TextArea的背景。 使用Google,我发现了两种实现方法:

1)通过放置

"-fx-background-image: url(...);"

进入

TextArea.setStyle();

2)仅使用

使背景透明
"-fxbackground-color: transparent;"

将图像作为另一个对象,将两个对象粘贴到同一位置,然后在图像后的文本区域中添加文本区域。

但是没有任何效果。我还发现了使用CSS的一些方法,但是在我当前的项目中,我没有这个方法,如果可能的话,我想避免。

最主要的情况是我不能使背景透明,它仍然是白色。有人可以给我建议,我在做什么错以及工作代码示例吗?

背景框架不是方形的,所以我真的需要透明的背景。

1 个答案:

答案 0 :(得分:0)

  

但是没有任何效果。我还发现了使用CSS的一些方法,但是在我目前的项目中,我还没有这种方法,如果可能的话,我想避免。

您已经在使用CSS。除非您要使用自己TextArea皮肤的实现,否则这里无法避免使用CSS。

您需要使用CSS样式表,使内容区域的背景和ScrollPane的视口透明:

@Override
public void start(Stage primaryStage) {
    TextArea textArea = new TextArea();
    textArea.getStyleClass().add("framed");

    Scene scene = new Scene(new StackPane(textArea));
    scene.getStylesheets().add("style.css");
    primaryStage.setScene(scene);
    primaryStage.show();
}

style.css

.framed.text-area {
    /* set size to picture size */
    -fx-pref-height: 958;
    -fx-pref-width: 958;
    -fx-min-height: 958;
    -fx-min-width: 958;
    -fx-max-height: 958;
    -fx-max-width: 958;

    /* necessary padding to not cover the speech bubble with text */
    -fx-padding: 95 135 329 90;

    /* some image of a speech bubble from the web */
    -fx-background-image: url(http://res.freestockphotos.biz/pictures/15/15674-illustration-of-a-cartoon-speech-bubble-pv.png);
}

.framed.text-area .scroll-pane .viewport,
.framed.text-area .content {
    -fx-background-color: null;
}