gpt4 book ai didi

java - 如何在 Java Swing 中使 JScrollPane 透明

转载 作者:行者123 更新时间:2023-12-02 06:31:31 25 4
gpt4 key购买 nike

我必须在屏幕上显示很长的文本,因此我将JTextArea包裹在JScrollPane内。现在我想让这个组合容器透明,这样只有文本可以看到,它看起来像是在 JFrame 上写了一个 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());
}
}

但是我得到了不透明的容器。

当我直接将 JTextArea 添加到 JFrame 时,它是透明的,但通过 JScrollPane 添加它会产生问题。

有什么帮助吗?

最佳答案

  1. 您可以通过要求 JScrollPane 实例返回其 View 端口来将 JScrollPane View 端口的不透明设置为 false:

     jScrollPane1.getViewport().setOpaque(false);
  2. 在代码中为什么要使用 setSize(Dimension) 方法设置大小。不要告诉我您正在使用 NullLayout。学习使用Layout Mangers 。他们会让你快乐。

编辑:

好的,使用JViewPort的扩展,如果需要的话你可以在里面画任何东西:

class MyViewPort extends JViewport
{

public MyViewPort() {
setOpaque(false);
}

}

然后将 MyViewPort 的实例设置为 JScrollPane 的 View 端口调用:

setViewport(new MyViewPort())

关于java - 如何在 Java Swing 中使 JScrollPane 透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019335/

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