⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chess.java

📁 JAVA版中国象棋
💻 JAVA
字号:
package xq;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.LinkedList;


public class Chess extends JFrame implements ActionListener {
	
	ChessBoard board = null;
	Demon demon = null;
	MakeChessManual record = null;
	public Container con = null;
	JMenuBar bar;
	JMenu fileMenu;
	JMenuItem 制作棋谱,保存棋谱,演示棋谱,exit;
	JFileChooser fileChooser = null;
	LinkedList 棋谱 = null;

	public Chess() {
		// TODO 自动生成构造函数存根
		bar = new JMenuBar();
		fileMenu = new JMenu("中国象棋");
		制作棋谱 = new JMenuItem("制作棋谱");
		保存棋谱 = new JMenuItem("保存棋谱");
		演示棋谱 = new JMenuItem("演示棋谱");
		exit = new JMenuItem("退出");
		fileMenu.add(制作棋谱);
		fileMenu.add(保存棋谱);
		fileMenu.add(演示棋谱);
		fileMenu.addSeparator();
		fileMenu.add(exit);
		bar.add(fileMenu);
		setJMenuBar(bar);
		setTitle(制作棋谱.getText());
		制作棋谱.addActionListener(this);
		保存棋谱.addActionListener(this);
		演示棋谱.addActionListener(this);
		exit.addActionListener(this);
		保存棋谱.setEnabled(false);
		board = new ChessBoard(this,45,45,9,10);
		record = board.record;
		con = getContentPane();
		JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,board,record);
		split.setDividerSize(5);
		split.setDividerLocation(460);
		con.add(split,BorderLayout.CENTER);
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		setVisible(true);
		setBounds(60,20,800,600);
		fileChooser = new JFileChooser();
		con.validate();
		validate();
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == 制作棋谱){
			con.removeAll();
			保存棋谱.setEnabled(true);
			this.setTitle(制作棋谱.getText());
			board = new ChessBoard(this,45,45,9,10);
			record = board.record;
			JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,board,record);
			split.setDividerSize(5);
			split.setDividerLocation(460);
			con.add(split,BorderLayout.CENTER);
			validate();
		}
		
		if(e.getSource() == 保存棋谱){
			int state = fileChooser.showSaveDialog(null);
			File saveFile = fileChooser.getSelectedFile();
			if(saveFile != null && state == JFileChooser.APPROVE_OPTION){
				try{
					FileOutputStream outOne = new FileOutputStream(saveFile);
					ObjectOutputStream outTwo = new ObjectOutputStream(outOne);
					outTwo.writeObject(record.获取棋谱());
					outOne.close();
					outTwo.close();
				}catch(IOException event){
					
				}
			}
		}
		if(e.getSource() == 演示棋谱){
			con.removeAll();
			con.repaint();
			con.validate();
			validate();
			保存棋谱.setEnabled(false);
			//读出棋谱文件
			int state = fileChooser.showOpenDialog(null);
			File openFile = fileChooser.getSelectedFile();
			if(openFile != null && state == JFileChooser.APPROVE_OPTION){
				try{
					FileInputStream inOne = new FileInputStream(openFile);
					ObjectInputStream inTwo = new ObjectInputStream(inOne);
					棋谱 = (LinkedList)inTwo.readObject();
					inOne.close();
					inTwo.close();
					ChessBoard board = new ChessBoard(this,45,45,9,10);
					demon.set棋谱(棋谱);
					con.add(demon,BorderLayout.CENTER);
					con.validate();
					validate();
					this.setTitle(演示棋谱.getText() + ": " + openFile);
				}catch(Exception event){
					JLabel label = new JLabel("你选择的文件不是棋谱文件");
					label.setFont(new Font("隶书",Font.BOLD,60));
					label.setForeground(Color.red);
					label.setHorizontalAlignment(SwingConstants.CENTER);
					con.add(label,BorderLayout.CENTER);
					con.validate();
					this.setTitle("无法打开文件");
					validate();
				}
			}
			else{
				JLabel label = new JLabel("请选择要演示的文件.");
				label.setFont(new Font("隶书",Font.BOLD,50));
				label.setForeground(Color.pink);
				label.setHorizontalAlignment(SwingConstants.CENTER);
				con.add(label,BorderLayout.CENTER);
				con.validate();
				this.setTitle("未选择棋谱文件");
				validate();
			}
		}
		if(e.getSource() == exit){
			System.exit(0);
		}
	}
	
	public void restart1(){
		con.removeAll();
		board = new ChessBoard(this,45,45,9,10);
		record = board.record;
		JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,board,record);
		split.setDividerSize(5);
		split.setDividerLocation(460);
		con.add(split,BorderLayout.CENTER);
		validate();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自动生成方法存根
		new Chess();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -