JButton刷新绘图问题

时间:2017-01-13 02:41:38

标签: java swing

我正在制作一款2D游戏,现在我被困在一个绘图问题上了。我每帧都用背景图像和字符重新绘制JPanel,但GUI是在设置功能中创建的。我认为这导致JButton出现在背景图像后面,值得一提的是这个类扩展了JPanel。我使用setBounds以特殊方式排列GUI元素。这个问题的可能解决方案是什么?

/** Draw game to the screen **/
private void gameDraw() {
    Graphics g2 = this.getGraphics();
    g2.drawImage(image, 0, 0 ,null);
    g2.dispose();
}

public void SetupUI() {
    uploadButton = new JButton("UPLOAD");
    uploadButton.setBounds(WIDTH / 2, HEIGHT - 40, 50, 30);
    uploadButton.setToolTipText("Press this button to upload your AI to the ship");
    uploadButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //TO DO: Make upload button compile and run the users code
        }
    });

    this.add(uploadButton);
    this.setVisible(true);
}

1 个答案:

答案 0 :(得分:0)

我决定重做代码来渲染游戏组件。问题似乎是GUI按钮和图像共享相同的屏幕空间,然后图像重新绘制每帧按钮。我想要的是gui覆盖在图像上,但我仍然不知道如何实现这一目标。

相反,我创建了两个单独的JPanel,一个用于将GUI元素保存在'功能区中。在图像上方,并且一个用于保持图像,其中两个面板都不重叠,然后将这两个面板打包到另一个面板中,然后将其分配给JFrame(感觉这是来自Emperors New Groove lol的场景)。每个面板都分配了一个布局。现在可以根据需要频繁地渲染其自己面板中的图像,而不会干扰gui。请记住按顺序绘制您想要的任何图像,例如绘制背景,然后是玩家。

我无法解决原始问题,但这是一个不错的解决方法。