19 个解决方案
#1
你是想把这个图片当做按钮还是想在图片上面添加按钮?没太明白你的意思!
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
#2
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
#3
正解
#4
没这个类吧!!
应该是自己写的!!
我觉得其实就是 在Jpanel 上导入图片作为组件背景!!!当然需要自定义JPanel的一个子类
然后可以添加按钮。。。。
#5
是这样的效果吗??
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);
}
}
}
#6
不行啊
#7
也不知道,来学习
#8
真有这个? 试一下!!
#9
是的,真是太感谢了
#10
学习
#11
自己写一个类ImagePanel 继承Panel可以实现这个功能.
#12
受教了!谢谢!
#13
ContentPane,GlassPane,GlassPane,LayeredPane这几个弄明白了就不难了,不同Component是添加在不同的层上的
#14
学习一下,顶
#15
使劲学
#16
可以像下面这样做,可以实现,呵呵!
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();
}
}
#17
你试着在panle(1)上嵌套一个和button一样大的panle(2)再把Button加入panle(2)上面试试
#18
你试试 add(label,-1) //label上放上图片,而后将图片放到底层
再将add(button,0)//再把按钮放在上去就行了
再将add(button,0)//再把按钮放在上去就行了
#19
为什么不用paintcomponents呢?
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}
#20
#1
你是想把这个图片当做按钮还是想在图片上面添加按钮?没太明白你的意思!
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
如果是直接把图片当做按钮直接在图片上添加onClick事件就行了!
#2
ImagePanel imagePanel = new ImagePanel(图片路径);
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
ImagePanel和一般的Panel一样,用add()方法加按钮就行了
#3
正解
#4
没这个类吧!!
应该是自己写的!!
我觉得其实就是 在Jpanel 上导入图片作为组件背景!!!当然需要自定义JPanel的一个子类
然后可以添加按钮。。。。
#5
是这样的效果吗??
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);
}
}
}
#6
不行啊
#7
也不知道,来学习
#8
真有这个? 试一下!!
#9
是的,真是太感谢了
#10
学习
#11
自己写一个类ImagePanel 继承Panel可以实现这个功能.
#12
受教了!谢谢!
#13
ContentPane,GlassPane,GlassPane,LayeredPane这几个弄明白了就不难了,不同Component是添加在不同的层上的
#14
学习一下,顶
#15
使劲学
#16
可以像下面这样做,可以实现,呵呵!
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();
}
}
#17
你试着在panle(1)上嵌套一个和button一样大的panle(2)再把Button加入panle(2)上面试试
#18
你试试 add(label,-1) //label上放上图片,而后将图片放到底层
再将add(button,0)//再把按钮放在上去就行了
再将add(button,0)//再把按钮放在上去就行了
#19
为什么不用paintcomponents呢?
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}
遇到跟你一样的情况
重载了paint
public void paint(Graphics g){
g.drawImage(i, 0, 0, 800, 640, null);
super.paintComponents(g);
}