扫雷游戏制作全过程02 之JLabel弯路

来源:互联网 发布:cms影视系统哪个好 编辑:程序博客网 时间:2024/06/10 09:12

就在刚刚写好前一篇博客后,我本来想说“JButton如果可以实现一个MouseListener就太好了,可惜它实现不了”于是写了一例子。

结果证明我错了。

可以对JButton进行鼠标点击的监听(具体这里我只是简单的实现状态的切换,并没有再往下进行下去了)

当初我做上一步的时候,为了实现地雷的标记,于是放弃了JButton自己的ActionListener,而选用了MouseListener。可是后来无法监听鼠标事件,

现在想来,应该是少写了一句addMouseListener();

太好了,那么,后面我们就用这个Button来实现对地雷块的操作。

具体只改变了MyButton的一部分,代码如下:

class MyButton extends JButton implements MouseListener{private boolean is_mine = false;  private int status = 0;  boolean is_marked = false;public MyButton(){this.setLayout(null);setIcon(new ImageIcon("a.png"));setMargin(new Insets(0,0,0,0));setIconTextGap(0);setBorderPainted(false);setBorder(null);setText(null);addMouseListener(this);}public void  beMarked()    {   this.setIcon(new ImageIcon("beMarked.png"));}    public void digOut(){     switch(status) {    case -1:  this.setIcon(new ImageIcon("c.png"));break;    case 0:  this.setIcon(new ImageIcon("0.png"));break;    case 1:  this.setIcon(new ImageIcon("1.png"));break;    case 2:  this.setIcon(new ImageIcon("2.png"));break;    case 3:  this.setIcon(new ImageIcon("3.png"));break;    case 4:  this.setIcon(new ImageIcon("4.png"));  break;    case 5:  this.setIcon(new ImageIcon("5.png"));break;    case 6:  this.setIcon(new ImageIcon("6.png"));break;    case 7:  this.setIcon(new ImageIcon("7.png"));break;    case 8:  this.setIcon(new ImageIcon("8.png"));   break;         }}public void setStatus(int copy_status){status = copy_status;}public boolean getIsMine(){  return is_mine;}@Overridepublic void mouseClicked(MouseEvent e){/**击左键*/if(e.getButton()==e.BUTTON1){digOut();}/**击右键*/else if(e.getButton() == e.BUTTON3){marked();}}    public void marked()    {if(is_marked){is_marked = false;setIcon(new ImageIcon("no_marked.png"));}else{is_marked = true;setIcon(new ImageIcon("marked.png"));}}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}}

修改后的源代码及资源已经上传,结果的截图如下:


原创粉丝点击