为什么在t1这个panel里的开始点了没有作用呢?(自己做的简单扫雷,想点击开始然后从新开始!)
import javax.swing.*;import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class controlor{
public static void main(String[] args){Myframe f=new Myframe();
f.s();
f.setlayout();
f.setSize(800,600);
f.MyFrame();
f.setVisible(true);
}
}
class Myframe extends JFrame implements ActionListener{
JButton button[]=new JButton[100];
Thread st=new Thread();
JButton ks=new JButton("开始");
JPanel t=new JPanel();
int c[]=new int[30];
int d[]=new int[100];
JPanel t1=new JPanel();
public void s(){
Vector v = new Vector();

int i=0;
    Random r = new Random();
    int num;
    boolean b = true;
    for(int j=0;j<100;j++)
     {d[j]=0;}
    while(b){
        num = r.nextInt(100); 
        if(!v.contains(num)){
            v.add(num);
            c[i]=num;
            System.out.println(c[i]);
          if(c[i]==0)
          {d[c[i]+1]=d[c[i]+1]+1;
          d[c[i]+10]=d[c[i]+10]+1;
          d[c[i]+11]=d[c[i]+11]+1;
          }
          if(c[i]==9){
           d[c[i]-1]=d[c[i]-1]+1;
           d[c[i]+10]=d[c[i]+10]+1;
           d[c[i]+9]=d[c[i]+9]+1;
          }
          if(c[i]==90){
           d[c[i]+1]=d[c[i]+1]+1;
           d[c[i]-9]=d[c[i]-9]+1;
           d[c[i]-10]=d[c[i]-10]+1;
          }
          if(c[i]==99){
           d[c[i]-10]=d[c[i]-10]+1;
           d[c[i]-1]=d[c[i]-1]+1;
           d[c[i]-11]=d[c[i]-11]+1;
          }
          if(c[i]%10==9&&c[i]!=9&&c[i]!=99){
           d[c[i]-10]=d[c[i]-10]+1;
           d[c[i]-1]=d[c[i]-1]+1;
           d[c[i]-11]=d[c[i]-11]+1;
           d[c[i]+10]=d[c[i]+10]+1;
           d[c[i]+9]=d[c[i]+9]+1;
          }
          if(c[i]>9&&c[i]%10!=0&&c[i]%10!=9&&c[i]<90)
            { d[c[i]+1]=d[c[i]+1]+1;
            d[c[i]-1]=d[c[i]-1]+1;
            d[c[i]+10]=d[c[i]+10]+1;
            d[c[i]+11]=d[c[i]+11]+1;
            d[c[i]+9]=d[c[i]+9]+1;
            d[c[i]-10]=d[c[i]-10]+1;
            d[c[i]-11]=d[c[i]-11]+1;
            d[c[i]-9]=d[c[i]-9]+1;}
        }  
        if(c[i]>0&&c[i]<9){
         d[c[i]+1]=d[c[i]+1]+1;
         d[c[i]-1]=d[c[i]-1]+1;
         d[c[i]+10]=d[c[i]+10]+1;
            d[c[i]+11]=d[c[i]+11]+1;
            d[c[i]+9]=d[c[i]+9]+1;
        }
        if(c[i]%10==0&&c[i]<90&&c[i]>0){
         d[c[i]+10]=d[c[i]+10]+1;
            d[c[i]+11]=d[c[i]+11]+1;
            d[c[i]+1]=d[c[i]+1]+1;
            d[c[i]-10]=d[c[i]-10]+1;
            d[c[i]-9]=d[c[i]-9]+1;
        }
        if(c[i]>90&&c[i]<99) 
        {d[c[i]-10]=d[c[i]-10]+1;
        d[c[i]-9]=d[c[i]-9]+1;
        d[c[i]-11]=d[c[i]-11]+1;
        d[c[i]+1]=d[c[i]+1]+1;
     d[c[i]-1]=d[c[i]-1]+1;
        }
        
        i++;
        if(v.size()==10){
            b = false;
        }
    }
    
    
}
public void setlayout()
{t.setSize(800,500);
t1.setSize(800,50);
t1.setLocation(0,0);
t.setLocation(0,50);
t.setLayout(new GridLayout(10,10,2,2));
this.setLayout(null);
}public void MyFrame(){
ks.addActionListener(this);
t1.add(ks);
for(int i=0;i<100;i++)
{button[i]=new JButton();
button[i].addActionListener(this);
   button[i].setForeground(new Color(0, 0, 255));
t.add(button[i]);
}
this.add(t1);
this.add(t);}
}
public void actionPerformed(ActionEvent e) {
for(int i=0;i<100;i++){
if (e.getSource() ==button[i]) {
if(i==c[0]||i==c[1]||i==c[2]||i==c[3]||i==c[4]||i==c[5]||i==c[6]||i==c[7]||i==c[8]||i==c[9])
{button[i].setBackground(Color.red);
System.out.print("game over");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {

e1.printStackTrace();
}
//reset();
}
else if(e.getActionCommand()=="开始")
{
reset();
System.out.println("bsdfsdfsdf");

}
else {button[i].setBackground(Color.gray);
button[i].setLabel(Integer.toString(d[i]));
}}





}}                        
public void reset(){
for(int k=0;k<100;k++){
button[k].setBackground(null);
button[k].setForeground(new Color(0, 0, 255));
button[k].setLabel(null);
}
}
}

解决方案 »

  1.   

    我也不知道怎么回事,明明就是插入了java代码啊,但是也不是很长啊
      

  2.   

    开始按钮不在100个普通按钮之列响应不到,且开始按钮应放第一个因为它只需等待一次,还有实现细节全部直接暴露,按单一逻辑功能封装一下会好多试试这样:
    public void actionPerformed(ActionEvent e) {

    if("开始".equals(e.getActionCommand())) {
    reset();
    System.out.println("bsdfsdfsdf");
    }

    for(int i = 0; i < 100; i++) {
    if(e.getSource() == button[i]) {
    if(i == c[0] || i == c[1] || i == c[2] || i == c[3] || i == c[4] || i == c[5] || i == c[6] || i == c[7]
    || i == c[8] || i == c[9]) {
    button[i].setBackground(Color.red);
    System.out.print("game over");
    try {
    Thread.sleep(1000);
    } catch(InterruptedException e1) {
    e1.printStackTrace();
    }
    } else {
    button[i].setBackground(Color.gray);
    button[i].setLabel(Integer.toString(d[i]));
    }
    } } }
      

  3.   

    十分感谢!知道了,一时疏忽了,我刚学java做个简单的程序,还没有那么严谨的思路,以后多多请教!
      

  4.   

    还有个问题想请教你,就是响应鼠标右键事件,我用的if (e.getButton()==MouseEvent.BUTTON3)但是没有作用!