?? tetrisframe.java
字號:
/**
* @(#)frm.TetrisFrame.java 2008-8-12
* Copy Right Information : Tarena
* Project : Tetris
* JDK version used : jdk1.6.4
* Comments : 此處輸入簡單類說明
* Version : 1.0
* Sr Date Modified By Why & What is modified
* 1. 2008-8-12 小豬 新建
**/
package frm;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import about.About;
import data.publicData;
/**
* 此處加入類詳細說明
* 2008-8-12
* @author 達內(nèi)科技[Tarena Training Group]
* @version 1.0
* @since JDK1.6(建議)
* @author Administrator
*/
public class TetrisFrame extends JFrame implements ActionListener{
/** 游戲面板 */
public static GamePane gamePan = null;
/** 信息面板 */
public static InfoPane infoPan = null;
/** 開始/停止游戲按鈕 */
public static JButton gameStart_Stop = new JButton("開始游戲");
/** 暫停/繼續(xù)游戲按鈕 */
private JButton gamePause_Con = new JButton("暫停游戲");
/** 顯示網(wǎng)格 */
private JCheckBox boxShowGrid = new JCheckBox("顯示網(wǎng)格");
/** 游戲是否在運行 */
public static boolean isRun = false;
/** 游戲是否暫停 */
public static boolean isPause = false;
/** 是否第一次運行 */
public static boolean isFirst = true;
/** 是否顯示網(wǎng)格 */
public static boolean isShowGrid = false;
/** 背景圖像 */
private BufferedImage image = null;
private JMenuBar menuBar=new JMenuBar();
private JMenu menuHelp=new JMenu("關(guān)于(H)");
private JMenuItem menuItemAbout=new JMenuItem("關(guān)于俄羅斯方塊",KeyEvent.VK_A);
public TetrisFrame() {
// try {
// image = ImageIO.read(new File("F:\\tarena\\ws_corejava\\Tetris\\bin\\frm\\2.jpg"));
// } catch (IOException e) {
// e.printStackTrace();
// }
setSize(405, 480);
Toolkit tk=Toolkit.getDefaultToolkit();
setLocation((tk.getScreenSize().width-getSize().width)/2,(tk.getScreenSize().height-getSize().height)/2);
setJMenuBar(menuBar);
menuBar.add(menuHelp);
menuHelp.setMnemonic(KeyEvent.VK_H);
menuHelp.add(menuItemAbout);
menuItemAbout.addActionListener(this);
gameStart_Stop.setSize(75,25);
gameStart_Stop.setLocation(231, 230);
gameStart_Stop.setMargin(new Insets(0,0,0,0));
gameStart_Stop.setOpaque(true);
gameStart_Stop.addActionListener(this);
gamePause_Con.setSize(75,25);
gamePause_Con.setEnabled(false);
gamePause_Con.setLocation(316, 230);
gamePause_Con.setOpaque(true);
gamePause_Con.setMargin(new Insets(0,0,0,0));
gamePause_Con.addActionListener(this);
boxShowGrid.setSize(80,25);
boxShowGrid.setLocation(231,265);
boxShowGrid.setOpaque(true);
boxShowGrid.addActionListener(this);
infoPan = new InfoPane();
infoPan.setLocation(231,10);
gamePan = new GamePane();
gamePan.setLocation(3, 3);
JPanel bPan = new JPanel();
bPan.setLocation(10, 10);
bPan.setBackground(publicData.bgColor);
bPan.setBorder(publicData.border);
bPan.setSize(206,406);
bPan.setLayout(null);
bPan.add(gamePan);
/* setLayout(new BorderLayout());
ImagePane ip = new ImagePane();
add(ip,BorderLayout.CENTER);*/
setLayout(null);
add(bPan);
add(infoPan);
add(gameStart_Stop);
add(gamePause_Con);
add(boxShowGrid);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
setVisible(true);
}
//@Override
// public void paint(Graphics g) {
//
// g.drawImage(image, 0, 28, this);
// //super.paint(g);
// }
// @Override
// public void paintComponents(Graphics g) {
// super.paintComponents(g);
// if(image == null) return;
// g.drawImage(image, 0, 28, this);
// int imageWidth = image.getWidth(this);
// int imageHeight = image.getHeight(this);
//
// for(int i=0;i*imageWidth <= getWidth();i++)
// for(int j=0;j*imageHeight <= getHeight();j++)
// if(i+j>0)
// g.copyArea(0, 0, imageWidth, imageHeight, i*imageWidth, j*imageHeight);
// }
/**
* 按鈕事件。
*/
public void actionPerformed(ActionEvent e) {
if(e.getSource()==gameStart_Stop){
//游戲正在運行,停止游戲
if(isRun){
gamePan.gameStop();
isRun = false;
gameStart_Stop.setText("開始游戲");
if(isPause){
isPause = false;
gamePause_Con.setText("暫停游戲");
}
gamePause_Con.setEnabled(false);
}else{//游戲停止運行,啟動游戲
gamePan.gameStart();
isRun = true;
gameStart_Stop.setText("結(jié)束游戲");
gamePause_Con.setEnabled(true);
isFirst = false;
}
}
if(e.getSource()==gamePause_Con){
//游戲已經(jīng)暫停,繼續(xù)游戲
if(isPause && isRun){
gamePan.gameContinue();
isPause = false;
gamePause_Con.setText("暫停游戲");
}
else if(!isPause && isRun){//暫停游戲,
gamePan.gamePause();
isPause = true;
gamePause_Con.setText("繼續(xù)游戲");
}
}
if(e.getSource()==boxShowGrid){
if(isShowGrid){
gamePan.repaint();
isShowGrid = false;
}else{
gamePan.repaint();
isShowGrid = true;
}
}
if(e.getSource()==menuItemAbout){
//JOptionPane.showMessageDialog(null, "<html><body>程序參與人員 :<br>研發(fā)部總監(jiān) : 趙德奎<br>分 析 設(shè) 計 : 楊 強<br>代 碼 編 寫 : 小 豬<body></html>");
new About(this,"關(guān)于俄羅斯方塊",true);
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -