【问题标题】:Java Swing JPanelJava Swing JPanel
【发布时间】:2014-10-16 15:48:43
【问题描述】:

我正在构建一个简单的俄罗斯方块游戏,在我最初的 JPanel 中有 3 个按钮。当我按下开始游戏按钮时,游戏在后台开始,但我的游戏画面没有出现。

我的俄罗斯方块类扩展了 JFrame,我有两个面板。一个用于 3 个按钮,一个用于实际游戏。当我按下开始游戏按钮时,它应该会移除按钮并显示游戏 JPanel。

有什么建议吗?谢谢。

startButton.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent e) {
                  System.out.println("Start button pressed");
                  Tetris.this.startGame();
              }
            });

这是 startGame() 的代码; board 对象也扩展了 JPanel

    public void startGame(){
            remove(panel);

        board = new Board();

        board.repaint();
        tempBoard = new Board();

        board.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                int keyCode = e.getKeyCode();
                if(keyCode == leftKey && canMoveLeft()){
                    moveLeft();
                }
                if(keyCode == rightKey && canMoveRight()){
                    moveRight();
                }
                if(keyCode == downKey && canMoveDown()){
                    sleepTime = 50;
                }
            }

            public void keyReleased(KeyEvent e) {
                int keyCode = e.getKeyCode();
                if(keyCode == downKey && canMoveDown()){
                    sleepTime = 300;
                }
            }
        });
        board.setFocusable(true);

        add(board,BorderLayout.CENTER);

        pack();
        setVisible(true);

        updateGame();

【问题讨论】:

  • 我推荐你使用 javafx
  • 可能是您的 updateGame(); 调用,如果这在 UI 中没有任何作用,我建议在单独的线程中启动该调用。

标签: java swing jpanel


【解决方案1】:

Container.remove(面板)

这就是你要找的 此外, tempBoard 似乎没有做任何事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2015-09-29
    相关资源
    最近更新 更多