Java 使JSplitPane完全透明

Java 使JSplitPane完全透明,java,swing,transparency,jtree,jsplitpane,Java,Swing,Transparency,Jtree,Jsplitpane,我正在用Java编写GUI程序 我有一个名为jpanel1的jpanel1,我在上面插入了一个JSplitpane(jSplitPane1)。我设置了jSplitPane1的左右组件jpanel2和jpanel3。我在下面板(jpanel1)上设置了一个背景图像,我想JSplitPane,它的左右组件是透明的,这样我就可以看到它们上面的背景图像。这在Java中可能吗?如果这是可能的,我可以使用该方法将JTree透明为JSplitpane?您只需调用:setOpaque(boolean)它取决于L

我正在用Java编写GUI程序


我有一个名为
jpanel1
jpanel1
,我在上面插入了一个
JSplitpane
jSplitPane1
)。我设置了
jSplitPane1
的左右组件<代码>jpanel2和
jpanel3
。我在下面板(
jpanel1
)上设置了一个背景图像,我想
JSplitPane
,它的左右组件是透明的,这样我就可以看到它们上面的背景图像。这在Java中可能吗?如果这是可能的,我可以使用该方法将
JTree
透明为
JSplitpane

您只需调用:
setOpaque(boolean)
它取决于L&F。MacOS上的AquaL&F将尊重setOpaque(false),但例如Nimbus似乎并不关心它。要强制使用透明分隔符,需要在JSplitPane的UI定义中覆盖它

 jSplitPane.setUI(new BasicSplitPaneUI(){
            @Override
            public BasicSplitPaneDivider createDefaultDivider() {
                return new BasicSplitPaneDivider(this){
                    @Override
                    public void paint(Graphics g) {
                    }
                };
            }
        });

一个潜在的缺点是,这种方法会覆盖此组件的L&F,因此可能会删除其他L&F主题元素。

为了更快地获得更好的帮助,请发布您的最佳尝试(以便我们可以使用它和测试解决方案)。我以前测试过,但没有效果+1、对我来说很好。由于海报上没有张贴SSCCE,我想我们无法提供更多的帮助。几年前我问过这个问题,但你的方法可能是有效的。谢谢