首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX 8中文本区域的透明背景

JavaFX 8中文本区域的透明背景
EN

Stack Overflow用户
提问于 2014-02-21 14:02:23
回答 1查看 24.6K关注 0票数 16

由于我使用的是JavaFX 8,所以我的所有textarea都不应用在相应的css中定义的transparency。它在Java 7中运行得很好,但是对于JavaFX 8的发布候选版本,我不能让它像以前那样运行。

编辑:这个问题是关于JavaFX TextArea,而不是JTextArea。

-fx-background-color: rgba(53,89,119,0.2);对文本区域不再有任何影响,虽然它应该有一个0.2的alpha值,但它是错误的。

这是个众所周知的问题吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-28 23:57:13

TextArea由几个节点组成。为了使背景透明,还必须更改子窗格的背景(TextArea、ScrollPane、ViewPort、Content)。这可以通过CSS实现。

CSS示例:

代码语言:javascript
复制
.text-area {
    -fx-background-color: rgba(53,89,119,0.4);
}

.text-area .scroll-pane {
    -fx-background-color: transparent;
}

.text-area .scroll-pane .viewport{
    -fx-background-color: transparent;
}


.text-area .scroll-pane .content{
    -fx-background-color: transparent;
}

这也可以通过代码来实现。代码不应该用于生产。它只是为了演示节点结构。

代码示例(使所有背景完全透明):

代码语言:javascript
复制
    TextArea textArea = new TextArea("I have an ugly white background :-(");
    // we don't use lambdas to create the change listener since we use
    // the instance twice via 'this' (see *)
    textArea.skinProperty().addListener(new ChangeListener<Skin<?>>() {

        @Override
        public void changed(
          ObservableValue<? extends Skin<?>> ov, Skin<?> t, Skin<?> t1) {
            if (t1 != null && t1.getNode() instanceof Region) {
                Region r = (Region) t1.getNode();
                r.setBackground(Background.EMPTY);

                r.getChildrenUnmodifiable().stream().
                        filter(n -> n instanceof Region).
                        map(n -> (Region) n).
                        forEach(n -> n.setBackground(Background.EMPTY));

                r.getChildrenUnmodifiable().stream().
                        filter(n -> n instanceof Control).
                        map(n -> (Control) n).
                        forEach(c -> c.skinProperty().addListener(this)); // *
            }
        }
    });

进一步参考:JavaFX CSS Documentation

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21936585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档