bombButton[i+1][j+1].isClicked=true; } } if((i-1>=0)&&(j-1>=0)) isNull(bombButton,bombButton[i-1][j-1]); if((i-1>=0)) isNull(bombButton,bombButton[i-1][j]); if((i-1>=0)&&(j+1<=(int)Math.sqrt(BlockNum)-1)) isNull(bombButton,bombButton[i-1][j+1]); if((j-1>=0)) isNull(bombButton,bombButton[i][j-1]); if((i>=0)&&(j+1<=(int)Math.sqrt(BlockNum)-1)) isNull(bombButton,bombButton[i][j+1]); if((j-1>=0)&&(i+1<=(int)Math.sqrt(BlockNum)-1)) isNull(bombButton,bombButton[i+1][j-1]); if((i+1<=(int)Math.sqrt(BlockNum)-1)) isNull(bombButton,bombButton[i+1][j]); if((j+1<=(int)Math.sqrt(BlockNum)-1))&&((i+1<=(int)Math.sqrt(BlockNum)-1)) isNull(bombButton,bombButton[i+1][j+1]); public void actionPerformed(ActionEvent e){ CountRoundBomb(); if(((Bomb)e.getSource().isBomb==false&&((Bomb)e.getSource()).isClicked==false)) { ((Bomb)e.getSource()).setText((((Bomb)e.getSource()).BombRoundCount)+\ ((Bomb)e.getSource()).isClicked=true; ((Bomb)e.getSource()).setIcon(null); ((Bomb)e.getSource()).setEnable(false); if((((Bomb)e.getSource()).BombRoundCount)==0) isNull(bombButton.(Bomb)e.getSource()); isWin(); } else if(((Bomb)e.getSource()).isBomb==true){ for(int i=0;i<(int)Math.sqrt(BlockNum);i++) for(int j=0;j<(int)Math.sqrt(BlockNum);j++){ if(bombButton[i][j].isBomb==true) bombButton[i][j].setIcon(icon_bomb) } ((Bomb)e.getSource()).setIcon(icon_bomb_big); JOptionPane msg=new JOptionPane(); JOptionPane.showMessageDialog(this,\你踩到地雷了,按确定重来\你踩到地雷了\ replay(); } } public void mouseClicked(MouseEvent e){ Bomb bombSource=(Bomb)e.getSource(); boolean right=SwingUtilities.isRightMouseButton(e); if((right==true)&&(bombSource.isClicked==false)){ bombSource.BombFlag=(bombSource.BombFlag+1)%3; 第26页
if(bombSource.BombFlag==1){ if(BombNum>0&&bombSource.isRight==false){ bombSource.setIcon(icon_flag); bombSource.isRight=true; BombNum--;} isWin(); nowBomb.setText(\当前雷数\ else if(bombSource.BombFlag==2){ if((BombNum!=0)||(BombNum==0&&(bombSource.getIcon()==icon_flag))) BombNum++; bombSource.setIcon(icon_question); nowBomb.setText(\当前雷数\ } else if(bombSource.BombFlag==0){ bombSource.setIcon(null); bombSource.isRight=false; } } } public void mouseEntered(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mousePressed(MouseEvent e){} public class Main{ public static void main(String args[]){ (new MainBomb()).show(); } (5)import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import java.util.*; //Date needed import java.io.PrintWriter; public class L08_05 extends JFrame{ JTextArea jta; class newl implements ActionListener { public void actionPerformed(ActionEvent e) { jta.setText(\ } } class openl implements ActionListener{ public void actionPerformed(ActionEvent e){ JFileChooser jf=new JFileChooser(); jf.showOpenDialog(L08_05.this); 第27页
} } class savel implements ActionListener{ public void actionPerformed(ActionEvent e){ JFileChooser jf = new JFileChooser(); jf.showSaveDialog(L08_05().this); } } class printl implements ActionListener{ public void actionPerformed(ActionEvent e){ PrintWriter p = new PrintWriter(NotePad.this); } } class exitl implements ActionListener { public void actionPerformed(ActionEvent e) { System.exit(0);//退出 } } class copyl implements ActionListener { public void actionPerformed(ActionEvent e){ jta.copy(); } } class pastel implements ActionListener { public void actionPerformed(ActionEvent e) { jta.paste(); } } class cutl implements ActionListener { public void actionPerformed(ActionEvent e) { jta.cut(); } } class datel implements ActionListener { public void actionPerformed(ActionEvent e){ Date d=new Date(); jta.append(d.toString()); } } 第28页
public L08_05() { jta=new JTextArea(\ JScrollPane jsp=new JScrollPane(jta); JMenuBar jmb=new JMenuBar(); JMenu mFile=new JMenu(\ JMenu mEdit=new JMenu(\ JMenuItem mNew=new JMenuItem(\ mNew.addActionListener(new newl()); mFile.add(mNew); JMenuItem mOpen=new JMenuItem(\ mOpen.addActionListener(new openl()); mFile.add(mOpen); JMenuItem mSave=new JMenuItem(\ mSave.addActionListener(new savel()); mFile.add(mSave); mFile.addSeparator(); JMenuItem mPrint = new JMenuItem(\ mPrint.addActionListener(new printl()); mFile.add(mPrint); mFile.addSeparator(); JMenuItem mExit=new JMenuItem(\ mExit.addActionListener(new exitl()); mFile.add(mExit); mFile.setMnemonic(KeyEvent.VK_F); JMenuItem jmi; jmi=new JMenuItem(\ jmi.addActionListener(new copyl()); mEdit.add(jmi); jmi=new JMenuItem(\ jmi.addActionListener(new cutl()); mEdit.add(jmi); jmi=new JMenuItem(\ jmi.addActionListener(new pastel()); mEdit.add(jmi); mEdit.addSeparator(); jmi=new JMenuItem(\ mEdit.add(jmi); jmi=new JMenuItem(\ mEdit.add(jmi); mEdit.addSeparator(); jmi=new JMenuItem(\ mEdit.add(jmi); jmi=new JMenuItem(\第29页
jmi.addActionListener(new datel()); mEdit.add(jmi); jmb.add(mFile); jmb.add(mEdit); this.setJMenuBar(jmb); this.getContentPane().add(jsp); this.setSize(200,200); this.setVisible(true); } public static void main(String s[]){ new L08_05(); } } 四.实验结果 实验一的运行结果如下: 实验二的运行结果如下: 实验三的运行结果如下: 第30页