JFrame图片背景

importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassDemo2extendsJF... import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Demo2 extends JFrame {
MyJPanel mp;
MyJPanel bt;
JButton jb;
boolean start=false;
int index;
private ImageIcon background;

//你可以定义很多的图片,我就定义三个好了
ImageIcon[] imgs = {
new ImageIcon("D:\\cj\\1.jpg"),
new ImageIcon("D:\\cj\\2.jpg"),
new ImageIcon("D:\\cj\\3.jpg"),
new ImageIcon("D:\\cj\\4.jpg"),
new ImageIcon("D:\\cj\\5.jpg"),
new ImageIcon("D:\\cj\\6.jpg"),
new ImageIcon("D:\\cj\\7.jpg"),
new ImageIcon("D:\\cj\\8.jpg")
};
public Demo2() {
jb = new JButton();
jb.setText("开始");
mp = new MyJPanel();
bt = new MyJPanel();

bt.add(jb);
this.add(mp);
this.add(bt,BorderLayout.SOUTH);
this.setSize(1024, 720);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setTitle("窗口");
this.setVisible(true);

final Timer timer = new Timer(100,new ActionListener() {
public void actionPerformed(ActionEvent e) {
mp.repaint();
}
});
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (!start)
{

jb.setText("停止");
timer.start();
start=true;
}
else
{
jb.setText("开始");
timer.stop();
start=false;
//给JPanel加一个固定的背景图片,但是不知道怎么做????下面的代码是无效的
background = new ImageIcon("images/a.jpg");// 背景图片
JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面
label.setBounds(0, 0, background.getIconWidth(),
background.getIconHeight());
// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
mp.add(label);
mp.setOpaque(false);

}

}
});
}

public static void main(String[] args) {
new Demo2();
}
class MyJPanel extends JPanel{
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawImage(imgs[index%imgs.length].getImage(), 0, 0,this);
index++;

}

}
}
请大神指点一下,我应该怎么做到,当点击停止的时候,背景图片固定为我想要的一个图片
展开
 我来答
hitzsf
2014-04-10 · TA获得超过2060个赞
知道大有可为答主
回答量:1741
采纳率:78%
帮助的人:1165万
展开全部
用JButton 的 public String getActionCommand() 和 public void setActionCommand(String actionCommand) 方法,在事件处理的程序中 判断 事件源即按钮的 动作命令,如果是“停止”的话, 设置定时器停止
追问
停止是可以的,我像要的是停止的时候那张图片是我固定想要的,pic1,无论怎么点停止,都是停在这个画面上
追答

1、在MyJPanel 的重绘组件方法里添加 判断start语句

		public void paint(Graphics g) {
super.paint(g);
if (start){
g.drawImage(imgs[index % imgs.length].getImage(), 0, 0, this);
index++;
} else {
g.drawImage(imgs[0].getImage(), 0, 0, this);//你默认显示的图片
}
}
2、在定时器停止、start标志重置后,再加一次mp.repaint();
else {
jb.setText("开始");
timer.stop();
start = false;
mp.repaint();//添加
字体视界
2024-09-30 广告
字体视界隶属于上海义启信息科技有限公司,是一家以“中文字体、西文字体、文字素材”等字体内容设计、生产,传播和版权交易为核心,多业务线矩阵协同发展的互联网科技文创企业。欢迎了解字体视界网站,字体视界网站提供正版字体商业授权服务、提供品牌字体(... 点击进入详情页
本回答由字体视界提供
Cry_小衰
2014-04-10 · TA获得超过219个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:138万
展开全部
JLabel label=new JLabel(new ImageIcon(路径));
mp.add(label);
追问
你这个跟我写的没区别
追答
mp.setOpaque(false);

不会显示mp的内容了吧 怎么还会有label
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式