用什么办法可以消除“游戏结束”这几个字被覆盖的

解决方案 »

  1.   

    在java中用Timer 来实现 俄罗斯方块的开始和结束,那么用什么实现暂停和继续呢
      

  2.   

    不管用啊,查了下API,不是暂停的功能
      

  3.   

    try itimport java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.util.*;
    import javax.swing.*;public class DelayedPaint {    private CenterPanel center;
        private JFrame frame;
        private JPanel panel;    public static void main(String args[]) {
            EventQueue.invokeLater(new Runnable() {            @Override
                public void run() {
                    new DelayedPaint().createAndShowGUI();
                }
            });
        }    void createAndShowGUI() {
            frame = new JFrame("Delayed Paint");
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.setSize(400, 400);
            panel = new JPanel(new BorderLayout());
            frame.setContentPane(panel);
            NorthPanel north = new NorthPanel();
            panel.add(north, BorderLayout.NORTH);
            center = new CenterPanel();
            panel.add(center, BorderLayout.CENTER);
            frame.setVisible(true);
            north.startTimer();
        }    class NorthPanel extends JPanel {        private JLabel lb;        public NorthPanel() {
                lb = new JLabel("Good morning");
                add(lb);
            }        public void startTimer() {
                ActionListener taskPerformer = new ActionListener() {                @Override
                    public void actionPerformed(ActionEvent evt) {
                        setLayout(new FlowLayout(FlowLayout.LEFT));
                        lb.setText("Left");
    //    timer.stop(); // Not needed if setRepeats(false).
                        center.startTimer();
                    }
                };
                javax.swing.Timer timer = new javax.swing.Timer(2000, taskPerformer);
                timer.setRepeats(false);
                timer.start();
            }
        }    class CenterPanel extends JPanel {        private int icnt;
            private Font boldFont = new Font("Dialog", Font.BOLD, 15);
            private Properties centerProps;
            private javax.swing.Timer timer;        public CenterPanel() {
                centerProps = new Properties();
                centerProps.setProperty("circle", "false");
                centerProps.setProperty("lastString", "0");
            }        @Override
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D) g;
                if (Boolean.valueOf(centerProps.getProperty("circle"))) {
                    Dimension dim = frame.getSize();
                    g2.draw(new Arc2D.Double(50, 25, dim.height - 100, dim.width - 100, 0, 360, Arc2D.OPEN));
                }
                int j = Integer.parseInt(centerProps.getProperty("lastString"));
                if (j > 0) {
                    g2.setFont(boldFont);
                    for (int i = 1; i <= j; i++) {
                        g2.drawString("" + (char) (i + 48), i * 10, 50);
                    }
                }
            }        public void startTimer() {
                ActionListener taskPerformer = new ActionListener() {                @Override
                    public void actionPerformed(ActionEvent evt) {
                        repaint(); // in paintComponent(...) icnt is already icnt+1.
                        icnt++;
                        if (icnt == 1) {
                            centerProps.setProperty("circle", "true");
                            timer.setDelay(500);
                        } else if (icnt <= 10) {
                            centerProps.setProperty("lastString", String.valueOf(icnt - 1));
                            if (icnt == 10) {
                                timer.stop();
                            }
                        }
                    }
                };
                timer = new javax.swing.Timer(2000, taskPerformer);
                timer.start();
            }
        }
    }
      

  4.   

    暂停时记录时间,重新开始时new一个新timer,从该时间开始。timer本身不支持pause功能
      

  5.   

    点“暂停”按钮时,记录时间,保存到全局变量,然后stop()