我必须在屏幕上显示一个长文本,因此我将JTextArea包裹在JScrollPane内。现在,我想使此组合容器透明,以便只看到看起来像JLabel的文本写在。所以我使用以下代码使它们透明class Body extends JTextArea{ Body(String text) { super(text); setOpaque(false); setSize(400,200); setWrapStyleWord(true); setLineWrap(true); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(new Color(12,25,55,0)); g.fillRect(0,0,this.getWidth(),this.getHeight()); }}class CustomScrollPane extends JScrollPane{ CustomScrollPane(JTextArea textArea) { super(textArea); setOpaque(false); setSize(400,200); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(new Color(220,10,10,0)); g.fillRect(0,0,this.getWidth(),this.getHeight()); }}但是我正在获得不透明的容器。当我直接将JFrame添加到JTextArea时,它是透明的,但是通过JFrame添加它会产生问题。有帮助吗? 最佳答案 您可以通过要求JScrollPane实例返回其视口来将false视口的不透明设置为JScrollPane: jScrollPane1.getViewport().setOpaque(false);在代码中,为什么要使用setSize(Dimension)方法设置大小。不要告诉我您使用NullLayout。学习使用Layout Mangers。他们会让你开心。编辑:好的,使用扩展名JViewPort,如有必要,您可以在内部绘制任何内容:class MyViewPort extends JViewport{ public MyViewPort() { setOpaque(false); }}然后将MyViewPort的实例设置为JScrollPane的查看端口调用:setViewport(new MyViewPort())关于java - 如何在Java Swing中使JScrollPane透明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20019335/ 10-12 20:04