每次鼠标进入后立马更改button的文字,以实现鼠标永远点不到button。
修改后:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Frame extends JFrame implements MouseListener{
JButton[] myButton;
int a = (int)(Math.random() * 9);
public void ranSet(){
int b = (int)(Math.random() * 9);
//这里处理重复是加1或减1,也可以调用自己重新再来:if(b==a)ranSet();不过这效率有些低,故不用
if(b==a){
if(a<8){
b=a+1;
}
else{ b=a-1;
}
}
myButton[a].setText("");
myButton[b].setText("Click me");
a=b;
}
public Frame(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Catch me if you can");
this.setSize(500,500);
this.setVisible(true);
setLayout(new GridLayout(3,3));
myButton = new JButton[9];
for(int i=0;i < a;i++){
myButton[i] = new JButton("");
myButton[i].addMouseListener(this);
add(myButton[i]);}
myButton[a] = new JButton("Click me");
myButton[a].addMouseListener(this);
add(myButton[a]);
for(int j=a+1;j < myButton.length;j++){
myButton[j] = new JButton("");
myButton[j].addMouseListener(this);
add(myButton[j]);
}
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
if(e.getSource () == myButton[a]){
ranSet();}
}
public static void main (String[] args){
Frame myFrame = new Frame();
myFrame.ranSet();
}
}