使用netbeans 如何在面版或者窗体上设置图片作为背景 在背景上还可以放置其他控件 我用过JLabel标签来显示图片但是上面不能放别的控件了 使用纯代码的话我会 但是netbeans自己生成的代码真是莫名其妙 不知道怎么修改了 是不是可以直接设置属性呢 要怎么设置 期待高人详解 感激不尽~~

解决方案 »

  1.   

    因为JFrame无法做背景, 所以我一般的做法是: 把背景图片放在Panel上, 然后其它的组件, 比如你说的JLbel放在该Panel上. 也不知是不是最好的方法, 下面只是一个示例, 可能以参考下.
    pelBg = new JPanel (){
          protected void paintComponent(Graphics g){
            super.paintComponent(g);
            ImageIcon img=new ImageIcon("E:\\2.jpg");
            img.paintIcon(this, g, 0, 0);
          }
        };在NetBeans中, 先插入Jpanel, 然后选择面板, 然后在属性面板中, "代码 -> 定制创建代码", 点击后面的"..."按钮在框中输入上面的代码即可.我一直都是这么做的, 有什么疑问: [email protected], 我可以把源代码发给你.
      

  2.   

    根据LS的代码修改了下 确实可以画出来 如果图片不是在根目录下怎么办?比如说图片在
    d:\\Program Flies\\NetBeans 6.5.1\\NetBeansProjects\\DormitoryManager\\src\\dormitorymanager\\resources\\2.jpg
    我是想把图片放在项目里面 路径应该怎么写 而且我想图片随着界面大小的改变而改变应该怎么办?
      

  3.   

    1、相对路径,“abc/edg.jpg”表示:运行环境目录“abc”中的“edg.jpg”文件。
    2、随界面大小改变而改变:给界面增加大小改变监听器,当界面改变时,重绘图片。
    ----------------------------------------------------------------------------
    下面把主要代码贴下,找了半天也没有上传的位置,不然把JAVA文件和form文件都上传了。pelBg = new JPanel (){
          protected void paintComponent(Graphics g){
            super.paintComponent(g);
            Image img = Toolkit.getDefaultToolkit().getImage("config/resource/profile.jpg");
            g.drawImage(img, 0, 0, this.getParent().getWidth(), this.getParent().getHeight(), this); 
          }
        };FormListener formListener = new FormListener();    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        addComponentListener(formListener);private class FormListener implements ComponentListener {
        FormListener() {}
        public void componentHidden(ComponentEvent evt) {
        }    public void componentMoved(ComponentEvent evt) {
        }    public void componentResized(ComponentEvent evt) {
          if (evt.getSource() == FrameBGUTest.this) {
            FrameBGUTest.this.frameComponentResized(evt);
          }
        }    public void componentShown(ComponentEvent evt) {
        }
      } private void frameComponentResized(ComponentEvent evt) {
        if (evt.getID() == ComponentEvent.COMPONENT_RESIZED) {
          this.pelBg.repaint();
        }
      }相信从代码中可以看出思路了,不再累赘了。