【问题标题】:How to make jTextArea Transparent background如何使jTextArea透明背景
【发布时间】:2015-08-06 17:57:36
【问题描述】:

我想做一个透明背景jTextArea。 我尝试 setBackground(new color(0,0,0,0)); jTextField 正在工作,jTextArea 没有工作。

喜欢这段代码。

// Not working.. Just remains gray.
    jScrollPane1.setOpaque(false);
    jScrollPane1.setBackground(new Color(0,0,0,0));
    jTextArea1.setOpaque(false);
    jTextArea1.setBackground(new Color(0,0,0,0));

    // Working.. As it wants to be transparent.
    jTextField1.setOpaque(false);
    jTextField1.setBackground(new Color(0,0,0,0));

如何让jTextArea透明背景?

感谢和问候。

【问题讨论】:

    标签: java


    【解决方案1】:

    以下对我有用。

    JTextArea textArea = new JTextArea();
    textArea.setOpaque(false);
    textArea.setBackground(new Color(red, green, blue, alpha));
    
    JScrollPane scrollPane = new JScrollPane(textArea);
    scrollPane.getViewport().setOpaque(false);
    scrollPane.setOpaque(false);
    

    【讨论】:

    • 啊,这就够了...... setOpaque(false) 对我来说已经足够了。谢谢@josemr。
    【解决方案2】:

    这个例子包括 50% 透明

    JTextArea textArea = new JTextArea();
    textArea.setOpaque(false);
    
    JScrollPane scrollPane = new JScrollPane(textArea) {
        @Override
        protected void paintComponent(Graphics g) {
            try {
                Composite composite = ((Graphics2D)g).getComposite();
    
                ((Graphics2D)g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f));
                g.setColor(getBackground());
                g.fillRect(0, 0, getWidth(), getHeight());
    
                ((Graphics2D)g).setComposite(composite);
                paintChildren(g);
            }
            catch(IndexOutOfBoundsException e) {
                super.paintComponent(g);
            }
        }       
    };
    
    scrollPane.getViewport().setOpaque(false);
    scrollPane.setOpaque(false);
    

    编辑抱歉这个错误。这是工作。

    【讨论】:

      【解决方案3】:

      JScrollPane 是一个组合组件,它控制/包含一个 JViewport,它是执行绘图的组件。参见 API:

      要做的一个常见操作是设置背景颜色 如果主视口视图小于视口,将使用, 或者不是不透明的。这可以通过设置背景来完成 视口的颜色,通过 scrollPane.getViewport().setBackground()。 设置视口颜色而不是设置颜色的原因 scrollpane 是默认情况下 JViewport 是不透明的,其中包括 事物,意味着它将使用其完全填充其背景 背景颜色。因此,当 JScrollPane 绘制其背景时 视口通常会覆盖它。

      所以你也应该改变JViewport的不透明和颜色属性。您可以使用jScrollPane1.getViewport() 访问它。

      【讨论】:

      • 我知道为什么这不起作用,多亏了你。问题已解决。
      猜你喜欢
      • 1970-01-01
      • 2011-09-17
      • 2011-02-18
      • 2016-10-24
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多