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

📄 mainframe.java

📁 连连看的源码
💻 JAVA
字号:
package nicholas.game.kyodai;

import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;

import nicholas.swing.AboutDialog;
import nicholas.swing.JSplashWindow;

public class MainFrame extends JFrame implements ActionListener {
	
	private JMenuItem aboutItem;
	private JMenuItem exitItem;
	private JMenuItem startItem;
	private JMenuItem optionItem;
	private JMenuItem tipItem;
	private JMenuItem refreshItem;
	private JMenuItem logItem;
	private JMenuItem bombItem;
	private JMenuItem pauseItem;
	
	private MainPanel mainPanel;
	
	private LevelInfo levelInfo;
	private LevelLog levelLog;
	
	public MainFrame() {
		super("连连看");
		
		levelInfo = new LevelInfo();
		
		readLog();
		
		setMenuBar();
		setUI();
		
		setIconImage(ImageFactory.getInstance().getImageicon(43).getImage());
		setSize(650,520);
		Dimension screen = getToolkit().getScreenSize();
		setLocation((screen.width-getSize().width)/2, (screen.height-getSize().height)/2);
		this.setVisible(true);
		addWindowListener(
			new WindowAdapter() {
				public void windowClosing(WindowEvent e) {
					writeLog();
					System.exit(0);
				}
			}
		);
	}
	
	private void writeLog() {
	}
	
	private void readLog() {
	}
	
	private void setMenuBar() {
		JMenu fileMenu = new JMenu("游戏(G)");
		JMenu helpMenu = new JMenu("帮助(H)");
		JMenu contMenu = new JMenu("辅助(C)");
		fileMenu.setMnemonic('G');
		helpMenu.setMnemonic('H');
		contMenu.setMnemonic('C');
		
		startItem = new JMenuItem("开局(N)");
		startItem.setMnemonic('N');
		startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));
		pauseItem = new JMenuItem("暂停(P)");
		pauseItem.setMnemonic('P');
		pauseItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PAUSE,0));
		refreshItem = new JMenuItem("刷新(R)");
		refreshItem.setMnemonic('R');
		refreshItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
		tipItem = new JMenuItem("提示(T)");
		tipItem.setMnemonic('T');
		tipItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
		optionItem = new JMenuItem("选项(O)...");
		optionItem.setMnemonic('O');
		logItem = new JMenuItem("排行榜(B)...");
		logItem.setMnemonic('B');
		exitItem = new JMenuItem("退出(X)");
		exitItem.setMnemonic('X');
		aboutItem = new JMenuItem("关于(A)...");
		aboutItem.setMnemonic('A');
		aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
		bombItem = new JMenuItem("炸弹(M)");
		bombItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,0));
		bombItem.setMnemonic('M');
		
		startItem.addActionListener(this);
		pauseItem.addActionListener(this);
		refreshItem.addActionListener(this);
		tipItem.addActionListener(this);
		optionItem.addActionListener(this);
		logItem.addActionListener(this);
		exitItem.addActionListener(this);
		aboutItem.addActionListener(this);
		bombItem.addActionListener(this);
		
		fileMenu.add(startItem);
		fileMenu.add(pauseItem);
		contMenu.add(refreshItem);
		contMenu.add(bombItem);
		contMenu.add(tipItem);
//		fileMenu.add(optionItem);
//		fileMenu.add(logItem);
		fileMenu.addSeparator();
		fileMenu.add(exitItem);
		
		helpMenu.add(aboutItem);
		helpMenu.add(contMenu);
				
		JMenuBar bar = new JMenuBar();
		bar.add(fileMenu);
		bar.add(helpMenu);
		
		setJMenuBar(bar);
	}
	
	private void setUI() {
		mainPanel = new MainPanel(levelInfo);
		getContentPane().add(mainPanel,BorderLayout.CENTER);
	}
	
	public static void main(String args[]) {
		JSplashWindow.setInstance("Nicholas Lin",ImageFactory.getInstance().getImageicon(42));
		MainFrame application = new MainFrame();
		JSplashWindow.getInstance().dispose();
	}
	
	private void showAboutDialog() {
		String readme = "";
		File file = new File("readme.txt");
		if(file.exists()) {
			try {
				BufferedReader input = new BufferedReader(new FileReader(file));
				StringBuffer buffer = new StringBuffer();
				String text;
				while((text = input.readLine())!=null)
					buffer.append(text+"\n");
				input.close();
				readme = buffer.toString();
			} catch(IOException ioException) {}
		}
		AboutDialog dialog = new AboutDialog(this, "连连看",readme,
			ImageFactory.getInstance().getImageicon(41),
			ImageFactory.getInstance().getImageicon(40));
		dialog = null;
	}
	
	public void actionPerformed(ActionEvent ae) {
		if(ae.getSource()==startItem) {
			mainPanel.restart();
		} else if(ae.getSource()==pauseItem) {
			mainPanel.setPaused(!mainPanel.isPaused());
		} else if(ae.getSource()==optionItem) {
		} else if(ae.getSource()==logItem) {
		} else if(ae.getSource()==exitItem) {
			writeLog();
			System.exit(0);
		} else if(ae.getSource()==aboutItem) {
			showAboutDialog();
		} else if(ae.getSource()==bombItem) {
			mainPanel.useBomb();
		} else if(ae.getSource()==refreshItem) {
			mainPanel.refresh();
		} else if(ae.getSource()==tipItem) {
			mainPanel.showNext();
		}
	}
}

⌨️ 快捷键说明

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