public void mouseClicked(MouseEvent e){
目前成都创新互联公司已为上1000家的企业提供了网站建设、域名、雅安服务器托管、网站托管运营、企业网站设计、翁牛特网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Object source=e.getSource(); //获取事件源,即地鼠标签
if(source instanceof JLabel){ //如果事件是标签组件
JLabel mouse=(JLabel)source; //强制转换为JLabel标签
mouse.setIcon(null); //取消标签图标
}
}
});
this.getContentPane().add(mouses[i]); //添加显示地鼠的标签到窗体
}
mouses[0].setLocation(253, 300); //设置每个标签的位置
mouses[1].setLocation(333, 250);
mouses[2].setLocation(388, 296);
mouses[3].setLocation(362, 364);
mouses[4].setLocation(189, 353);
mouses[5].setLocation(240, 409);
final JLabel backLabel=new JLabel(); //创建显示背景的标签
backLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
this.setBounds(100,100,img.getIconWidth(),img.getIconHeight());
backLabel.setIcon(img); //添加背景到标签
this.getContentPane().add(backLabel); //添加背景标签到窗体
}
/**
* 线程的核心方法
*/
public void run(){
while(true){ //使用无限循环
try{
Thread.sleep(3000); //使线程休眠3秒
int index=(int)(Math.random()*6); //生成随机的地鼠索引
if(mouses[index].getIcon()==null){ //如果地鼠标签没有设置图片
mouses[index].setIcon(imgMouse); //为该标签添加地鼠图片
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
增加一个count计数,用来统计打中的次数。
点击一个button的时候,判断当前点击的button的颜色是不是红色,如果是,count++
你做的是iptv游戏吗 机顶盒游戏吗 还是模拟器运行的啊
请提供更多详细信息,方便问题定位朋友
Shrewmouse初始化出错,
图片初始化错了,可以这样:
Image image = new ImageIcon("graphics/Window2.png").getImage();
public class Game extends Thread{
/**
* @param args
*/
String [][] gameMap = new String[3][3];
public static void main(String[] args) {
// TODO Auto-generated method stub
new Game().start();
}
public void initMap()
{
for (int i = 0; i gameMap.length; i++) {
for (int j = 0; j gameMap[0].length; j++) {
gameMap[i][j] = new String();
gameMap[i][j] = "O" ; //洞,表示没有老鼠出来
}
}
}
public void printMap()
{
for (int i = 0; i gameMap.length; i++) {
for (int j = 0; j gameMap[0].length; j++) {
System.out.print(gameMap[i][j]);
}
System.out.println();
}
}
public void run()
{
int temp = 0 ;
while(true)
{
initMap();
for (int i = 0; i gameMap.length; i++) {
for (int j = 0; j gameMap[0].length; j++) {
temp = (int)(100 * Math.random());
if(temp=20) //可以调整,让老鼠出现的概率降低一些
gameMap[i][j] = "@"; //有老鼠出现
}
}
printMap();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println();
}
}
}
呵呵,线程加数组就可以了,但是不知道能不能满足你的要求。截图如下:
1.先在Frame的左侧添加应该JLabel用于显示打击次数:
JLabel l = new JLabel("hit!");
c.add(l, BorderLayout.WEST);
2.修改你的J_ActionListener类:
a.增加一个 JLabel 属性 l
b.添加一个参数是 JLabel 的构造函数,将传入的 JLabel实例赋值给属性 this.l = l
c.修改actionPerformed方法,让他将修改 l.text的值 l.setText("打了" + (++m_count) + "次")
3.最后在创建J_ActionListener的时候将界面上的JLabel赋值进去:
J_ActionListener a = new J_ActionListener(l);
完整代码如下(类名首个字母要大写,这个是约定,我就斗胆先修改下了。。):
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
class J_ActionListener implements ActionListener {
int m_count = 0;
JLabel l;
public J_ActionListener(JLabel l) {
this.l = l;
}
public void actionPerformed(ActionEvent e) {
l.setText("打了" + (++m_count) + "次");
}
}
public class Datz extends JFrame {
private static final long serialVersionUID = 1L;
public Datz() {
super("打地鼠");
JButton b = new JButton("打一下");
JLabel l = new JLabel("hit!");
Container c = getContentPane();
c.add(b, BorderLayout.CENTER);
c.add(l, BorderLayout.WEST);
J_ActionListener a = new J_ActionListener(l);
b.addActionListener(a);
}
public static void main(String args[]) {
Datz app = new Datz();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app.setSize(100, 80);
app.setVisible(true);
}
}