67,513
社区成员
发帖
与我相关
我的任务
分享
public class TetrisJFrame extends JFrame implements ActionListener,ItemListener{ //主类是一个JFrame,包含一个JPanel(线程对象)
JMenuBar menuBar;
TetrisJPanel gameJPanel; //中间游戏面板
JPanel hitJPanel; //左侧提示面板
JPanel controlJPanel; //右侧操作面板
public TetrisJFrame (){
/*.....
菜单设计部分省略
.....*/
gameJPanel.setPreferredSize(new Dimension(400, 580)); //设置面板大小方式
gameJPanel.setBorder(BorderFactory.createMatteBorder(20, 20, 20, 20, Color.gray)); //边界
Dimension dimension=new Dimension(260,580);
hitJPanel.setPreferredSize(dimension);
hitJPanel.setBackground(Color.red);
controlJPanel.setPreferredSize(dimension);
controlJPanel.setBackground(Color.blue);
this.setLayout(new FlowLayout()); //JFrame默认是Border边界布局
Container con =this.getContentPane(); //获取一个容器
con.add(hitJPanel);
con.add(gameJPanel);
con.add(controlJPanel);
//给当前的窗体对象注册键盘监听器,监听者为gameJPanel
this.addKeyListener(gameJPanel);
//开始线程
Thread t = new Thread(gameJPanel);
t.start();
}
public static void main(String[] args) {
TetrisJFrame f = new TetrisJFrame();
f.setSize(960,650);
f.setVisible(true);
f.setLocationRelativeTo(null); //屏幕中央
f.setResizable(false);
f.setDefaultCloseOperation(EXIT_ON_CLOSE); //关闭窗口直接退出
}
@Override
public void actionPerformed(ActionEvent e) { //通过菜单项调整方块下落速度
// TODO Auto-generated method stub
String actionCommand=e.getActionCommand();
switch (actionCommand) {
case "慢(S)": //如果点击了一个菜单项,就响应此事件,我想让原来frame中线程对象暂停?
TetrisJPanel.flashTime=500;
TetrisJPanel.curFlashTime=500;
//System.out.println(this.getName()); //此处调试输出:frame0
//如下就会报错
try {
this.gameJPanel.wait();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
//e1.printStackTrace();
System.out.println("11112");
}
break;