如何使用 JTextArea 设置 JScrollPane 背景透明和 JScrollBarr 可见?
How to set JScrollPane Background transparent and JScrollBarr Visible with JTextArea?
这就是我想要实现的:
我尝试了什么:
jTextArea.setOpaque(false);
这使得 JTextArea
透明。
jScrollPane.setOpaque(false);
这样 没有效果
然后我尝试了隐藏 JScrollPane
和 JTextArea
的方法。
jScrollPane.getViewPort().setOpaque(false);
jScrollPane.setOpaque(false);
然后我尝试了隐藏 JScrollPane
和 JTextArea
的方法。
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
我不知道原始代码有什么问题,可能是由于使用了拖放。
这是有效的代码。谢谢 Camickr 和 MadProgrammer 的建议。 :)
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);
}
});
}
}
这就是我想要实现的:
我尝试了什么:
jTextArea.setOpaque(false);
这使得JTextArea
透明。jScrollPane.setOpaque(false);
这样 没有效果然后我尝试了隐藏
JScrollPane
和JTextArea
的方法。jScrollPane.getViewPort().setOpaque(false); jScrollPane.setOpaque(false);
然后我尝试了隐藏
JScrollPane
和JTextArea
的方法。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
我不知道原始代码有什么问题,可能是由于使用了拖放。 这是有效的代码。谢谢 Camickr 和 MadProgrammer 的建议。 :)
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);
}
});
}
}