0
我在我正在編寫的程序(允許背景顯示通過)中有一個透明的,可編輯的JTextPane,並且除文本插入符號之外,一切運行良好。插入透明JTextPane
插入符號本身的正常動作,但每次它的繪製時間,它打破了區域的透明度就在後面,所看到的圖像:
有什麼辦法使背景插入符號透明而不重新繪製整個框架? 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);
}
}
你可以把一些代碼很好嗎? – CRazyProgrammer
要重現您的問題,我們必須手動編寫代碼。由於您已經編碼,您可以將您的完成代碼添加到您的問題中,以便我們可以快速查看問題。請發佈[SSCCE](http://sscce.org) – Sage
我最初是在JRuby中編寫程序的,所以我花了一小會兒才寫了一個SSCCE ......這很好用。我的代碼可能與JTextPane沒有任何關係,所以我會再次通讀它。感謝您的幫助,併爲此感到抱歉。 – user2804914