俄罗斯方块游戏的菜单栏和工具栏的实现,主要帮助我
1, 掌握菜单和工具栏的实现机制;
2, 建立俄罗斯方块游戏菜单类;
3, 建立俄罗斯方块游戏工具栏类(选做);
4, 建立“退出游戏”菜单的事件处理机制,并实现退出功能;
5, 实现对CMenu类的测试。
具体实现代码:
1)
/**
*作 者:Heloway
*类 名:CMenu
*类说明: 菜单栏
*/
public class CMenu {
private JMenuBar menuBar;
private JMenu gameMenu,appMenu,aboutMenu,netMenu,dataMenu;
private JMenuItem newGameMenuItem,exitMenuItem,saveInfoMenuItem,getInfoMenuItem;
private JCheckBoxMenuItem netSendInfoMenu,netRecInfoMenu;
private JMenuItem[] aboutMenuItemArrays;
private String[] aboutStrings=new String[]{"作者:hlw","版本:V1.0"};
private ActionListener listener;
/**
* 创建出所有菜单和菜单项的对象实例
*/
public CMenu() {
menuBar=new JMenuBar();
gameMenu=new JMenu("游戏");
appMenu=new JMenu("应用");
aboutMenu=new JMenu("关于");
netMenu=new JMenu("网络");
dataMenu=new JMenu("数据库");
newGameMenuItem=new JMenuItem("新游戏");
exitMenuItem=new JMenuItem("退出");
saveInfoMenuItem=new JMenuItem("保存游戏信息");
getInfoMenuItem=new JMenuItem("获取游戏信息");
netSendInfoMenu=new JCheckBoxMenuItem("发送信息");
netSendInfoMenu.setSelected(true);
netRecInfoMenu=new JCheckBoxMenuItem("接收信息");
aboutMenuItemArrays=new JMenuItem[2];
for (int i = 0; i < aboutMenuItemArrays.length; i++) {
aboutMenuItemArrays[i]=new JMenuItem(aboutStrings[i]);
}
}
/**
* 创建菜单结构
*/
public JMenuBar createMenuStruct() {
menuBar.add(gameMenu);
menuBar.add(appMenu);
menuBar.add(aboutMenu);
gameMenu.add(newGameMenuItem);
gameMenu.addSeparator();//分隔符
gameMenu.add(exitMenuItem);
appMenu.add(netMenu);
appMenu.add(dataMenu);
netMenu.add(netSendInfoMenu);
netMenu.add(netRecInfoMenu);
dataMenu.add(saveInfoMenuItem);
dataMenu.add(getInfoMenuItem);
for (int i = 0; i < aboutMenuItemArrays.length; i++) {
aboutMenu.add(aboutMenuItemArrays[i]);
}
return menuBar;
}
/**
* 通过这个方法可以获取所有菜单对应的监听器
* @param l
*/
public void addActionListener(ActionListener l) {
if (l!=null) {
this.listener=l;
}
exitMenuItem.addActionListener(l);
}
}
2)
public interface GameListener extends ActionListener{
}
3)
/**
*作 者: Helloway
*类 名:CController
*类说明: 实现GameListener接口
*/
public class CController implements GameListener{
/**
* 实现actionEvent事件的方法
*/
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("退出")) {
System.exit(0);
}
}
}
4)
/**
*作 者:Helloway
*类 名:TextMyGame
*类说明:用户创建窗口开始游戏及测试其他的类的正确性
*/
public class TestMyGame {
public static void main(String[] args) {
JFrame myFrame=new JFrame("我的俄罗斯方块");
CControlPanel myControlPanel = new CControlPanel();
CMessagePanel myMsgPanel= new CMessagePanel();
//添加菜单栏
CController myController = new CController();
CMenu myMenu=new CMenu();
myMenu.addActionListener(myController);
myFrame.setJMenuBar(myMenu.createMenuStruct());
Container con=myFrame.getContentPane();
con.add(myControlPanel,BorderLayout.EAST);
con.add(myMsgPanel,BorderLayout.SOUTH);
myFrame.setSize(400, 500);
CGlobal.showCenter(myFrame);
myFrame.setVisible(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
界面展示: