我在java界面窗口加入了一张图片,想在该图片上增加几个按钮,可是一加就把图片覆盖了,请问哪位高手有什么好的办法?

解决方案 »

  1.   

    你是想把这个图片当做按钮还是想在图片上面添加按钮?没太明白你的意思!
    如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
      

  2.   

    ImagePanel imagePanel = new ImagePanel(图片路径);
    ImagePanel和一般的Panel一样,用add()方法加按钮就行了
      

  3.   


    没这个类吧!!
    应该是自己写的!!
    我觉得其实就是  在Jpanel 上导入图片作为组件背景!!!当然需要自定义JPanel的一个子类
    然后可以添加按钮。
      

  4.   

    是这样的效果吗??
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;import javax.imageio.ImageIO;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class ImagePanel 
    { public static void main(String[] args) 
    {
    new ImagePanelFrame(); }}
    class  ImagePanelFrame extends JFrame
    {

    private static final long serialVersionUID = 1L; public ImagePanelFrame()
    { setSize(400,400);
    setLocation(400,200);
    JButton bt=new JButton("测试按钮");
    ImagePanel panel=new ImagePanel(new File("背景.jpg"));
    panel.add(bt);
    add(panel);
    setVisible(true);

    }
    class ImagePanel extends JPanel
    {
    Image image;
    private static final long serialVersionUID = 1L; public ImagePanel(File file)
    {
    try 
    {
     image=ImageIO.read(file);

    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    public void paint(Graphics g)
    {
    g.drawImage(image,0,0,null);
    }
    }
    }
      

  5.   

    自己写一个类ImagePanel 继承Panel可以实现这个功能.
      

  6.   

    ContentPane,GlassPane,GlassPane,LayeredPane这几个弄明白了就不难了,不同Component是添加在不同的层上的
      

  7.   

       可以像下面这样做,可以实现,呵呵!
        
         public class Login extends JFrame { public Login() {

    JPanel bg = new JPanel() { @Override
    protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Image image = null;
    try {
    image = ImageIO.read(this.getClass().getResource(
    "login.jpg"));
    } catch (IOException e) { e.printStackTrace();
    }
    g.drawImage(image, 0, 0, null); } }; JLayeredPane layer = this.getLayeredPane();
    layer.setLayout(null);
    bg.setBounds(0, 0, 300, 300);
    bg.setOpaque(true);
    layer.add(bg, new Integer(100));
    JButton b = new JButton("提交");
    b.setBounds(new Rectangle(20, 20, 100, 100));
    b.setOpaque(true);
    layer.add(b, new Integer(300));
    b.setVisible(true); setSize(300, 300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    } public static void main(String[] args) {
    new Login();
    }}    
      

  8.   

    你试着在panle(1)上嵌套一个和button一样大的panle(2)再把Button加入panle(2)上面试试
      

  9.   

    你试试  add(label,-1)  //label上放上图片,而后将图片放到底层
    再将add(button,0)//再把按钮放在上去就行了
      

  10.   

    为什么不用paintcomponents呢?
    遇到跟你一样的情况
    重载了paint
    public void paint(Graphics g){
    g.drawImage(i, 0, 0, 800, 640, null);
    super.paintComponents(g);
    }