📄 queenframe.java
字号:
/*
* QueenFrame.java
*
* Created on 2008年3月9日, 下午12:07
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package javaapplication15;
import java.awt.Container;
import java.awt.*;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.LinkedList;
import javaapplication15.DrawQueen;
import javaapplication15.QueenWindowEvent;
import javax.swing.*;
;
/**
*
* @author vivi
*/
public class QueenFrame extends JFrame implements ActionListener{
public String[]strsize={"4*4","5*5","6*6","7*7","8*8","9*9","10*10","11*11","12*12"};
public int pwidth;
public static int z=0;
public static int t=0 ;
public static int pause=1 ;
public static int remind;
public static int count=0;
public static int invailable=0;
public QueenModel qm;
public DrawQueen dq;
public JTextField b2;
public DrawQueen dq1;
public Qlabel qb;
public Qlabel b3;
public Timer time;
public JButton b1;
public File file4=new File("四皇后排行榜");
public File file5=new File("五皇后排行榜");
public File file6=new File("六皇后排行榜");
public File file7=new File("七皇后排行榜");
public File file8=new File("八皇后排行榜");
public File file9=new File("九皇后排行榜");
public File file10=new File("十皇后排行榜");
public File file11=new File("十一皇后排行榜");
public File file12=new File("十二皇后排行榜");
public LinkedList scorelist=null;
ShowRecord sr=null;
File gradeFile=null;
public QueenFrame(){
time=new Timer(1000,new timeListner()); //创建一个每秒增加的监听器
this.setTitle("EightQueens");
qm=new QueenModel(5);
pwidth=24;
FrameSize(24,qm);
this.addWindowListener(new QueenWindowEvent()); //为主窗体添加窗口事件监听器
Container con=this.getContentPane();
JPanel panel=new JPanel();
JPanel panel2=new JPanel();
JButton b1=new JButton("开始");
JButton b5=new JButton("暂停");
JButton b6=new JButton("继续");
JButton b7=new JButton("提示");
b1.addActionListener(new time1Listner());
b5.addActionListener(new time2Listner());
b6.addActionListener(new time3Listner());
b7.addActionListener(new warnListner());
b2=new JTextField("时间");
JLabel b4=new JLabel("分数:");
b3=new Qlabel(this,"你的得分:");
panel.setLayout(new GridLayout(1,3)); //窗体布局管理器北面的标签及文本框
panel.add(b2);
panel.add(b4);
panel.add(b3);
panel2.setLayout(new GridLayout(1,4)); //窗体布局管理器南面的按钮
panel2.add(b1);
panel2.add(b5);
panel2.add(b6);
panel2.add(b7);
con.add(panel,BorderLayout.NORTH);
con.add(panel2,BorderLayout.SOUTH);
JMenuBar mbar=new JMenuBar();
this.setJMenuBar(mbar);
JMenu gameMenu=new JMenu("游戏(g)"); //创建游戏菜单
gameMenu.setMnemonic('G');
mbar.add(makeMenu (gameMenu,new Object[]{"棋盘","显示危险境地","取消危险境地","清盘",null,"退出"},this));
JMenu lookMenu=new JMenu("记录(R)");
mbar.add(makeMenu (lookMenu,new Object[]{"四皇后排行榜","五皇后排行榜","六皇后排行榜","七皇后排行榜","八皇后排行榜","九皇后排行榜","十皇后排行榜","十一皇后排行榜","十二皇后排行榜"},this));
lookMenu.setMnemonic('R');
JMenu helpMenu=new JMenu("帮助(H)");
helpMenu.setMnemonic('H');
mbar.add(lookMenu);
mbar.add(makeMenu(helpMenu,new Object[]{"关于","介绍"},this));
scorelist=new LinkedList();
gradeFile=file8;
if(!file4.exists())
{
try{
FileOutputStream out=new FileOutputStream("四皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file5.exists())
{
try{
FileOutputStream out=new FileOutputStream("五皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file6.exists())
{
try{
FileOutputStream out=new FileOutputStream("六皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file7.exists())
{
try{
FileOutputStream out=new FileOutputStream("七皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file8.exists())
{
try{
FileOutputStream out=new FileOutputStream("八皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file9.exists())
{
try{
FileOutputStream out=new FileOutputStream("九皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file10.exists())
{
try{
FileOutputStream out=new FileOutputStream("十皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file11.exists())
{
try{
FileOutputStream out=new FileOutputStream("十一皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file12.exists())
{
try{
FileOutputStream out=new FileOutputStream("十二皇后排行榜");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(scorelist);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
}
public JMenu makeMenu(Object parent,Object items[],Object target){ //创建菜单
JMenu m=null;
if(parent instanceof JMenu)
m=(JMenu)parent;
else if(parent instanceof String)
m=new JMenu((String)parent);
else
return null;
for(int i=0;i<items.length;i++)
if(items[i]==null)
m.addSeparator();
else if(items[i]=="棋盘"){
JMenu jm=new JMenu("棋盘");
ButtonGroup group=new ButtonGroup();
JRadioButtonMenuItem rmenu;
for(int j=0;j<strsize.length;j++){
rmenu=makeRadioButtonMenuItem(strsize[j],target);
if(j==4)
rmenu.setSelected(true);
jm.add(rmenu);
group.add(rmenu);
}
m.add(jm);}
else
m.add(makeMenuItem(items[i],target));
return m;
}
public JMenuItem makeMenuItem(Object item,Object target){ //创建菜单选项
JMenuItem r=null;
if(item instanceof String)
r=new JMenuItem((String)item);
else if(item instanceof JMenuItem)
r=(JMenuItem)item;
else
return null;
if(target instanceof ActionListener);
r.addActionListener ((ActionListener) target);
return r;
}
public JRadioButtonMenuItem makeRadioButtonMenuItem(Object item,Object target){ //创建
JRadioButtonMenuItem r=null;
if(item instanceof String)
r=new JRadioButtonMenuItem((String)item);
else if(item instanceof JRadioButtonMenuItem)
r=(JRadioButtonMenuItem)item;
else
return null;
if(target instanceof ActionListener)
r.addActionListener((ActionListener) target);
return r;
}
/** Creates a new instance of QueenFrame */
public void actionPerformed(ActionEvent e) { //菜单监听器的相应
QueenModel qm1;
String str=e.getActionCommand();
if(str.equals("4*4")){ //以4*4为例
gradeFile=file4; //输入排行榜的参数,等级
dq1.setVisible(false); //前一个棋盘不可见
this.pwidth=12; //窗体尺寸参数
qm1=new QueenModel(1); //创建QueenModel对象,得到棋盘模式和棋盘尺寸信息
FrameSize(this.pwidth, qm1); //创建游戏城个窗体
this.qm=qm1; //设定当前模式
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -