拖拽控件后消失不见——Windowbuilder遇到的问题及解决方法

本人菜鸟一只,这是曾经遇到的一个问题及解决办法,如果有大佬觉得有问题或是更好的办法欢迎留言啦!!共同进步

Windowbuilder是java的一款可视化编辑工具,可在Eclipse中安装使用,Windowbuilder大大提高了java可视化开发的效率,但其中也会遇到一些麻烦。

当我们想在JFrame里的最底层添加一张图片作为背景时,我们有这样一种方法:首先在JFrame里添加一个JLabel,并将其大小调整为和JFrame一样大小,然后我们用JLabel的setIcon()的功能即可添加图片作为背景,再接着需要添加各种label1、button2的控件,我们可以JLabel.add(label1)、JLabel.add(button2)……

但在使用到Windowbuilder工具时会遇到这么个问题:你每次往JLabel(也就是背景图)里面拖拽label1、button2各种控件时,所有的控件在你拖动到所合适的位置后都会消失不见,其实这并不是真的消失了,而是被JLabel(也就是背景图)遮挡了,这时候你再回到代码编辑页面你会发现控件并不是被添加到了JLabel里,而是frame.getContentPane().add(label1)、frame.getContentPane().add(button2)。

这时候你会明白JLabel因为并不是容器,所以每次网背景图里面合适的位置拖拽控件时,他都会被默认的添加到frame.getContentPane()这个最底层的容器里,然后被图片遮挡自然也就看不见了。

也许你会说那我在代码编辑页面重新将frame.getContentPane().add(label1);更改为JLabel.add(label1)不就行了吗?——的确,这是一种方法,但是每当你在winbuilder里重新调整控件位置时他就又会消失不见了,你就必须又去修改一次代码,而且我们的控件很多,这样做会很麻烦。

那怎样做才能往背景图里面拖拽控件后,控件不会消失不见呢?下面是我的一个方法:

首先创建一个JFrame

再往里面添加一个JLabel并将他调整为和JFrame一样的大小

在winbuilder左下角的属性里面往JLabel中添加图片作为背景图

往JLabel中添加一个JPanel,并将其调整为和JLabel一样大小

这时候关键来了,回到代码编辑页面,增加下面两行代码:

        JPanel.setOpaque(false);  //使面板透明
        JLabel.add(JPanel);        //把面板添加在JLabel上面

好了,大功告成,这时候往图片里面添加各种控件,他都会展示在最上面了。

你可能感兴趣的:(C#)