繁体   English   中英

如何使用JTextArea设置JScrollPane背景透明和JScrollBarr可见?

[英]How to set JScrollPane Background transparent and JScrollBarr Visible with JTextArea?

这是我要实现的目标:

http://i.stack.imgur.com/g7pOE.png

我试过的

  1. jTextArea.setOpaque(false); 这使JTextArea透明。
  2. jScrollPane.setOpaque(false); 没有效果
  3. 然后我尝试了这同时隐藏JScrollPaneJTextArea

     jScrollPane.getViewPort().setOpaque(false); jScrollPane.setOpaque(false); 
  4. 然后我尝试了这同时隐藏JScrollPaneJTextArea

     jScrollPane.setViewPort(new MyViewPort()); class MyViewPort() extends JViewPort{ public MyViewPort(){ setOpaque(false); } } 

我要实现的是JScrollPane背景透明和透明的JTextArea ,我应该可以在其中添加文本和可见的JScrollPane

更新:我这样做是可以在textArea中添加文本,但jscrollPane不透明:

public class TransparentBackground extends javax.swing.JFrame {

    public TransparentBackground() {
        jScrollPane = new javax.swing.JScrollPane();
        jTextArea = new javax.swing.JTextArea();
        lblBackground = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jTextArea.setColumns(20);
        jTextArea.setRows(5);
        jScrollPane.setViewportView(jTextArea);
        jScrollPane.getViewport().setOpaque(false);
        jScrollPane.setOpaque(false);
        jTextArea.setOpaque(false);

        getContentPane().add(jScrollPane, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 40, 580, 300));

        lblBackground.setIcon(new javax.swing.ImageIcon(getClass().getResource("/bg.png"))); // NOI18N
        getContentPane().add(lblBackground, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 680, 390));

        pack();
    }

当我使用

jScrollPane.setViewPort(new MyViewPort());
class MyViewPort() extends JViewPort{
    public MyViewPort(){
        setOpaque(false);
    }
}

textArea和JScrollPane都消失(透明),但需要jTextArea透明且可编辑,或者可以在其中添加文本。

当我设置自定义视图端口结果是这样的

我不知道私有代码有什么问题,可能是由于拖放的缘故。 这是起作用的代码。 谢谢CamickrMadProgrammer的建议。 :)

import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.*;

public class TransparentBackground1 extends JFrame {
    private javax.swing.JScrollPane jScrollPane;
    private javax.swing.JTextArea jTextArea;
    private javax.swing.JLabel lblBackground;

    public TransparentBackground1() {
        setPreferredSize(new Dimension(675, 375));
        jScrollPane = new JScrollPane();
        jTextArea = new JTextArea();
        lblBackground = new JLabel();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(new FlowLayout());

        jTextArea.setColumns(20);
        jTextArea.setRows(5);
        jScrollPane.setViewportView(jTextArea);

        //Code To make transparent
        jScrollPane.getViewport().setOpaque(false);
        jScrollPane.setOpaque(false);
        jTextArea.setOpaque(false);


        lblBackground.setIcon(new ImageIcon(getClass().getResource("/bg.png"))); // NOI18N

        pack();
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TransparentBackground().setVisible(true);
            }
        });
    }
}

这是输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM