在java中如何在一张图片上添加按钮控件?

SunnyVS 2009-10-23 01:52:18
我在java界面窗口加入了一张图片,想在该图片上增加几个按钮,可是一加就把图片覆盖了,请问哪位高手有什么好的办法?
...全文
2846 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kobexu123 2010-10-07
  • 打赏
  • 举报
回复
为什么不用paintcomponents呢?
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}
  • 打赏
  • 举报
回复
你试试 add(label,-1) //label上放上图片,而后将图片放到底层
再将add(button,0)//再把按钮放在上去就行了
宅男小何 2010-03-28
  • 打赏
  • 举报
回复
可以像下面这样做,可以实现,呵呵!

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();
}

}

niulei190922 2010-03-28
  • 打赏
  • 举报
回复
你试着在panle(1)上嵌套一个和button一样大的panle(2)再把Button加入panle(2)上面试试
whd3331933 2010-03-27
  • 打赏
  • 举报
回复
使劲学
woshiygjs 2010-03-27
  • 打赏
  • 举报
回复
学习一下,顶
ouyangshujun 2010-01-01
  • 打赏
  • 举报
回复
受教了!谢谢!
QuickPai 2010-01-01
  • 打赏
  • 举报
回复
ContentPane,GlassPane,GlassPane,LayeredPane这几个弄明白了就不难了,不同Component是添加在不同的层上的
btq123 2009-12-30
  • 打赏
  • 举报
回复
自己写一个类ImagePanel 继承Panel可以实现这个功能.
SunnyVS 2009-12-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lz12366007 的回复:]
是这样的效果吗??

Java codeimport 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;publicclass ImagePanel
{publicstaticvoid main(String[] args)
{new ImagePanelFrame();

}

}class ImagePanelFrameextends JFrame
{privatestaticfinallong 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 ImagePanelextends JPanel
{
Image image;privatestaticfinallong serialVersionUID=1L;public ImagePanel(File file)
{try
{
image=ImageIO.read(file);

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

是的,真是太感谢了
苍蝇①号 2009-12-23
  • 打赏
  • 举报
回复
学习
lanegg 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zx_ares 的回复:]
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
[/Quote]

真有这个? 试一下!!
淅沥加油 2009-12-15
  • 打赏
  • 举报
回复
也不知道,来学习
wangxinfeng1990 2009-12-15
  • 打赏
  • 举报
回复
不行啊
lz12366007 2009-10-23
  • 打赏
  • 举报
回复
是这样的效果吗??


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);
}
}
}
lz12366007 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zx_ares 的回复:]
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
[/Quote]

没这个类吧!!
应该是自己写的!!
我觉得其实就是 在Jpanel 上导入图片作为组件背景!!!当然需要自定义JPanel的一个子类
然后可以添加按钮。。。。
zlllyk110 2009-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zx_ares 的回复:]
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
[/Quote]
正解
ZX_ARES 2009-10-23
  • 打赏
  • 举报
回复
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
xinzaibao 2009-10-23
  • 打赏
  • 举报
回复
你是想把这个图片当做按钮还是想在图片上面添加按钮?没太明白你的意思!
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧