锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.LinkedList;
public class Memory extends JFrame implements ActionListener
{
JMenuBar bar;
JMenu fileMenu;
JMenuItem 鍒濈駭,涓駭,楂樼駭,鍒濈駭鎺掕姒?涓駭鎺掕姒?楂樼駭鎺掕姒?
Block block[];
ImageIcon icon[];
MemoryTestPane 璁板繂嫻嬭瘯鏉?null;
File file鍒濈駭=new File("鍒濈駭璁板繂鎺掕姒?txt"),
file涓駭=new File("涓駭璁板繂鎺掕姒?txt"),
file楂樼駭=new File("楂樼駭璁板繂鎺掕姒?txt");
LinkedList 鎴愮嘩琛?null;
ShowRecord 鏄劇ず鎴愮嘩琛ㄥ璇濇=null;
int m=5,n=6;
int 鍥炬爣涓暟=0;
Container con=null;
JTextField 鎻愮ず鏉?null;
File gradeFile=null;
public Memory()
{
block=new Block[m*n];
鍥炬爣涓暟=m;
icon=new ImageIcon[鍥炬爣涓暟];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].璁劇疆鍏抽棴鏃剁殑鍥炬爣(new ImageIcon("鍏抽棴.gif"));
}
bar=new JMenuBar();
fileMenu=new JMenu("璁板繂鍔涙祴璇?);
鍒濈駭=new JMenuItem("鍒濈駭");
涓駭=new JMenuItem("涓駭");
楂樼駭=new JMenuItem("楂樼駭");
fileMenu.setMnemonic('G');
鍒濈駭.setMnemonic('B');
涓駭.setMnemonic('I');
楂樼駭.setMnemonic('E');
楂樼駭鎺掕姒?new JMenuItem("楂樼駭鎺掕姒?);
涓駭鎺掕姒?new JMenuItem("涓駭鎺掕姒?);
鍒濈駭鎺掕姒?new JMenuItem("鍒濈駭鎺掕姒?);
鍒濈駭.setMnemonic('T');
fileMenu.add(鍒濈駭);
fileMenu.add(涓駭);
fileMenu.add(楂樼駭);
fileMenu.add(鍒濈駭鎺掕姒?;
fileMenu.add(涓駭鎺掕姒?;
fileMenu.add(楂樼駭鎺掕姒?;
bar.add(fileMenu);
setJMenuBar(bar);
鍒濈駭.addActionListener(this);
涓駭.addActionListener(this);
楂樼駭.addActionListener(this);
鍒濈駭鎺掕姒?addActionListener(this);
涓駭鎺掕姒?addActionListener(this);
楂樼駭鎺掕姒?addActionListener(this);
鎴愮嘩琛?new LinkedList();
if(!file鍒濈駭.exists())
{
try{
FileOutputStream out=new FileOutputStream("鍒濈駭璁板繂鎺掕姒?txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(鎴愮嘩琛?;
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file涓駭.exists())
{
try{
FileOutputStream out=new FileOutputStream("涓駭璁板繂鎺掕姒?txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(鎴愮嘩琛?;
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file楂樼駭.exists())
{
try{
FileOutputStream out=new FileOutputStream("楂樼駭璁板繂鎺掕姒?txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(鎴愮嘩琛?;
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
gradeFile=file鍒濈駭;
setBounds(100,100,300,260);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
con=getContentPane();
璁板繂嫻嬭瘯鏉?new MemoryTestPane(block,icon,m,n,gradeFile);
鎻愮ず鏉?new JTextField("鍒濈駭錛氭偍闇瑕佽繛緇壘鍑?+6+"涓浉鍚屽浘鏍囩殑鏂瑰潡");
鎻愮ず鏉?setEditable(false);
鎻愮ず鏉?setForeground(Color.red);
con.add(璁板繂嫻嬭瘯鏉?BorderLayout.CENTER);
con.add(鎻愮ず鏉?BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void 緇欏嚭綰у埆嫻嬭瘯(int 瀹?int 楂?File f)
{
m=瀹?
n=楂?
鍥炬爣涓暟=m;
gradeFile=f;
block=new Block[m*n];
icon=new ImageIcon[鍥炬爣涓暟];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].璁劇疆鍏抽棴鏃剁殑鍥炬爣(new ImageIcon("鍏抽棴.gif"));
}
璁板繂嫻嬭瘯鏉?new MemoryTestPane(block,icon,m,n,gradeFile);
con.removeAll();
con.add(璁板繂嫻嬭瘯鏉?BorderLayout.CENTER);
con.add(鎻愮ず鏉?BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==鍒濈駭)
{
緇欏嚭綰у埆嫻嬭瘯(5,6,file鍒濈駭);
setBounds(100,100,300,260);
this.validate();
鎻愮ず鏉?setText("鍒濈駭錛氭偍闇瑕佽繛緇壘鍑?+6+"涓浉鍚屽浘鏍囩殑鏂瑰潡");
}
if(event.getSource()==涓駭)
{
緇欏嚭綰у埆嫻嬭瘯(6,7,file涓駭);
setBounds(100,100,340,280);
this.validate();
鎻愮ず鏉?setText("涓駭錛氭偍闇瑕佽繛緇壘鍑?+7+"涓浉鍚屽浘鏍囩殑鏂瑰潡");
}
if(event.getSource()==楂樼駭)
{
緇欏嚭綰у埆嫻嬭瘯(7,8,file楂樼駭);
setBounds(100,100,360,300);
this.validate();
鎻愮ず鏉?setText("楂樼駭錛氭偍闇瑕佽繛緇壘鍑?+8+"涓浉鍚屽浘鏍囩殑鏂瑰潡");
}
if(event.getSource()==楂樼駭鎺掕姒?
{
鏄劇ず鎴愮嘩琛ㄥ璇濇=new ShowRecord(this,file楂樼駭);
鏄劇ず鎴愮嘩琛ㄥ璇濇.setVisible(true);
}
if(event.getSource()==涓駭鎺掕姒?
{
鏄劇ず鎴愮嘩琛ㄥ璇濇=new ShowRecord(this,file涓駭);
鏄劇ず鎴愮嘩琛ㄥ璇濇.setVisible(true);
}
if(event.getSource()==鍒濈駭鎺掕姒?
{
鏄劇ず鎴愮嘩琛ㄥ璇濇=new ShowRecord(this,file鍒濈駭);
鏄劇ず鎴愮嘩琛ㄥ璇濇.setVisible(true);
}
}
public static void main(String args[])
{
new Memory();
}
}