JButton 刷新绘图问题



我正在开发一个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);
}

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

取而代之的是,我创建了两个单独的 JPanels,一个用于将 GUI 元素保存在图像上方的"功能区"中,另一个用于保存两个面板都不重叠的图像,然后将这两个元素打包到另一个面板中,然后将其分配给 JFrame(感觉这是皇帝新凹槽的场景哈哈)。每个面板都分配有一个布局。现在可以根据需要频繁地渲染其自身面板中的图像,而不会干扰 GUI。只需记住按顺序绘制您想要的任何图像,例如绘制背景,然后绘制播放器。

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

最新更新