Java 透明JTextPane中的插入符号
在我正在编写的程序中,我有一个透明的、可编辑的JTextPane(允许背景显示),除了文本插入符号外,一切都很好 插入符号本身正常工作,但每次绘制时,它都会破坏其正后方区域的透明度,如图所示: 有没有办法使插入符号的背景透明,而不必重新绘制整个框架Java 透明JTextPane中的插入符号,java,swing,Java,Swing,在我正在编写的程序中,我有一个透明的、可编辑的JTextPane(允许背景显示),除了文本插入符号外,一切都很好 插入符号本身正常工作,但每次绘制时,它都会破坏其正后方区域的透明度,如图所示: 有没有办法使插入符号的背景透明,而不必重新绘制整个框架DefaultCaret没有setOpaque()方法,因此我不太确定如何执行此操作 谢谢 编辑:我还不能回答我自己的问题,但我最终写了一个工作完美的SSCCE,所以我的程序肯定还有其他问题。作为将来的参考,这是我写的(工作)代码: import j
DefaultCaret
没有setOpaque()
方法,因此我不太确定如何执行此操作
谢谢
编辑:我还不能回答我自己的问题,但我最终写了一个工作完美的SSCCE,所以我的程序肯定还有其他问题。作为将来的参考,这是我写的(工作)代码:
import java.awt.*;
import javax.swing.*;
class TransparentScrollPane extends JScrollPane {
public TransparentScrollPane(Component view) {
super(view);
this.setPreferredSize(new Dimension(540,480));
this.setOpaque(false);
this.viewport.setOpaque(false);
this.setBorder(null);
}
}
public class TextPaneExample extends JTextPane {
public TextPaneExample()
{
super();
this.setOpaque(false);
}
public void paintComponent(Graphics g)
{
g.setColor(new Color(255,255,255,128));
g.fillRect(0, 0, getWidth(), getHeight());
super.paintComponent(g);
}
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setSize(640, 480);
JPanel panel = new JPanel();
panel.setBackground(new Color(255,128,255));
TextPaneExample textPane = new TextPaneExample();
TransparentScrollPane scroller = new
TransparentScrollPane(textPane);
textPane.setBackground(new Color(255,255,255,128));
frame.add(panel);
panel.add(scroller,BorderLayout.CENTER);
frame.setVisible(true);
}
}
有关问题和两个解决方案,请参见
基本上,您可以使用:
panel.add( new AlphaContainer(componentWithTransparency) );
对于你的第一个问题,你可以得到一个免费答案:)未来的问题应该包括一个适当的
SSCCE
,它可以演示问题。你能提供一些很棒的代码吗?要重现你的问题,我们必须手工编写代码。由于您已经编写了代码,您只需将您的已完成代码添加到问题中,这样我们就可以快速研究该问题。请发表一篇文章,我最初是用JRuby编写这个程序的,所以我刚才花了一点时间编写了一个SSCCE…它工作得非常好。我的代码可能还有其他错误,与JTextPane无关,因此我将再次检查。谢谢你的帮助,很抱歉给你添麻烦。