gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:52:32 25 4
gpt4 key购买 nike

这就是我想要实现的目标:

/image/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 透明且可编辑或可以在其中添加文本。

When I set custom view port result is like this

最佳答案

我不知道私有(private)代码有什么问题,可能是由于使用了拖放造成的。这是有效的代码。感谢 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);
}
});
}
}

Here is Output

关于java - 如何使用 JTextArea 设置 JScrollPane 背景透明和 JScrollBarr 可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37516999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com