俺想在面板固定位置加栽个小图片??? JPanel1占据整个JFrame  JPanel2放在JPanel1上 JPanel2显示图片  怎样实现??? 望众位大侠给予指点  小弟这先谢过

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.GridLayout;import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JPanel;public class Test extends JFrame { private static final long serialVersionUID = 6470477702039762986L;

    private JPanel pane = null; // 要占据整个JFrame的Panel public Test(){
    super("Image Test");
    pane = new JPanel(new GridLayout(2, 2)); // 可以设置一个适合的布局管理器(现在是一个“田”字形的布局)
    //pane = new JPanel(new BorderLayout()); // 不同的布局有不同的效果,不知道你想要做成什么样子的,不好建议啊,布局管理是GUI的核心,建议多花些时间学习
    pane.add(new MyPane(new ImageIcon("D:/01.jpg"))); // 将要画图的Panel放到“田”字的左上角
    pane.add(new MyPane(new ImageIcon("D:/02.jpg"))); // 继续放
    pane.add(new MyPane(new ImageIcon("D:/03.jpg"))); // 继续放
    pane.add(new MyPane(new ImageIcon("D:/04.jpg"))); // 放完了
    this.getContentPane().add(pane);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(new Dimension(300, 200));
    this.setVisible(true);
    } public static void main(String[] args) {
    new Test();
    }

    class MyPane extends JPanel { private static final long serialVersionUID = 2399443539634707320L;

    private ImageIcon image = null; // 要画的图形
    /**
     * 构造,接收ImageIcon参数
     * @param image 要画的图形参数
     */
    public MyPane(ImageIcon image){
    this.image = image;
    }
    /**
     * 重载printComponent(Graphics g)方法来画图
     */
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image.getImage(), 10, 10, 50, 50, this); // 将固定大小的Image画到固定的位置
    }

    }
    }
      

  2.   

    老兄  你给的代码怎么在我这跑不起来啊   我的思路是jPanel1布局为xyLayout 在它低角写个jPanel2面板 图片显示在jPanel2中 图片为一个  请给予指导     我懂了一头午还是没结果  我原来的代码为一个主菜单项 填充在JFrame中  jPanel1和jPanel2都是后添加的
      

  3.   

    代码正常,我测试过发的,你要把4个图片的地址改成你的
    窗口显示后再添加组件需要重新布局,看看API Docs,其中Container类的validate()方法