使JPanel不绘制其背景(透明)

26

在Java中,是否可以使JPanel跳过绘制其背景,从而除了其上的组件之外透明不可见?

5个回答

38

setOpaque(false)

setOpaque(false) 会将背景的绘制交给父组件,而父组件可能会自行绘制背景。

您可以进行屏幕截图,然后使用该截图来绘制面板的背景。


5

需要Java SE 7。我使用的是Linux,它有OpenJDK 6.0,但无法工作。 - user285594

2

从技术上讲,JPanel 可能最初是非透明的。这在 1.5(或 1.4?)中对于 Gtk 外观和感觉来说是正确的,但据我所知,其他 PL&Fs 都不是这样。


2

如果您正在使用NetBeans,则需要执行以下步骤:

  1. 右键单击 JPanel
  2. 向下滚动并搜索 (( Opaque )). 它必须在那里。
  3. 取消勾选它。
  4. 现在,您的 JPanel 背景将被移除,JPanel 背景中将显示您的 JFrame 背景。

1
class TransparentJPanel extends JPanel
{
    TransparentJPanel()
    {
        super() ;
        this.setOpaque( false ) ; // this will make the JPanel transparent 
                                  // but not its components (JLabel, TextField etc.)
        this.setLayout( null ) ;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接