我在java界面窗口加入了一张图片,想在该图片上增加几个按钮,可是一加就把图片覆盖了,请问哪位高手有什么好的办法?
解决方案 »
- 如何在子类中获得父类地址?
- class.forName()有什么作用啊?
- 通DatagramSocket绑定不了对方端口的问题
- DREAMWEAVER序列号??
- java应用程序想要调用ms speech sdk 5.1 activex
- 我是个Java新手,请高手们帮忙看看这个程序运行结果为什么不对??
- 请问tomcat到底该怎么配置?送100分!在线等!
- 表格及相关类的使用方法
- 使用VE怎样才能在jFrame中增加菜单和工具栏?
- 多态:实现接口和继承抽象类的输出效果怎么不一样?且看我的期末考试题
- HmacMD5 加密时,出现java.security.NoSuchAlgorithmException 错误!
- 【**各位帮个忙**】 关于java基础的
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
没这个类吧!!
应该是自己写的!!
我觉得其实就是 在Jpanel 上导入图片作为组件背景!!!当然需要自定义JPanel的一个子类
然后可以添加按钮。
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);
}
}
}
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();
}}
再将add(button,0)//再把按钮放在上去就行了
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}