用java构建游戏GUI

用java构建游戏GUI,java,swing,user-interface,Java,Swing,User Interface,我正在用java为我正在开发的虚拟宠物游戏构建GUI,到目前为止,我的主要问题是确定获得我想要的结果的最佳方法 基本上我有一个这样的基本设置 JFrame(大型机) Jpanel(主面板)此面板位于Jframe上 然后我向主面板添加更多面板 menuPanel和gamePanel-I使用cardLayout在面板之间切换 MenuPanel提供了启动游戏/加载/帮助/退出的基本菜单(运行正常) GamePanel是我遇到问题的地方 我想提供一个屏幕,让玩家输入数据(宠物名、类型等),我想把它作为

我正在用java为我正在开发的虚拟宠物游戏构建GUI,到目前为止,我的主要问题是确定获得我想要的结果的最佳方法

基本上我有一个这样的基本设置

JFrame(大型机) Jpanel(主面板)此面板位于Jframe上 然后我向主面板添加更多面板 menuPanel和gamePanel-I使用cardLayout在面板之间切换

MenuPanel提供了启动游戏/加载/帮助/退出的基本菜单(运行正常)

GamePanel是我遇到问题的地方

我想提供一个屏幕,让玩家输入数据(宠物名、类型等),我想把它作为一个面板,然后切换到实际游戏将要玩的游戏面板,但我不知道这是否是最好的方式,因为我也希望他们能够检查细节是否正确,如果不允许他们重新输入

另一个问题是我需要这样的设置

宠物区域(背景、宠物动画) 下面是保持静态的按钮

vvvvvvvvvvvvvvvvvvvvv
v                   v
v                   v
v    Pet Area       v
vvvvvvvvvvvvvvvvvvvvv
v                   v
v    buttons        v
vvvvvvvvvvvvvvvvvvvvv
我试图在gamePanel上添加两个面板——graphicPanel和buttonPanel,但netbeans在面板层次结构方面存在问题

如果有人做了一个类似的项目,可以给我一些建议,编码这个更好的将不胜感激。它将以这种方式工作,但它看起来杂乱无章,效率低下

我想提供一个屏幕,允许玩家输入数据(宠物名、类型等)

这可能是一个JDialog模型,而不是主框架上的面板。然后,您可以重新显示对话框并根据需要更改数据

我的另一个问题是我想要这样的设置

看起来像一个面板,一个在“中间”,另一个在“页面末尾”

另一个问题是我需要这样的设置

我会这样做:

public class gamePanel extends JPanel{
    private ButtonsPanel buttonsPanel;
    private GraphicsPanel graphicsPanel;

    public gamePanel(){
        super();
        this._initGUI();
    }
    private void _initGUI(){
        this.buttonsPanel = new ButtonsPanel();
        this.graphicsPanel = new GraphicsPanel();

        this.setLayout(new BorderLayout());
        this.add(buttonsPanel, BorderLayout.SOUTH);
        this.add(graphicsPanel, BorderLayout.CENTER);
    }

    public void run(){
        graphicsPanel.run();
    }
}

public class GraphicsPanel extends JPanel(){

    public void run(){
        // this method could be called from the game loop.

        // ....
        // ....

        this.repaint();
    }

    @Override
    public void paint(Graphics g){
        // here paint all graphics
    }
}

public class ButtonsPanel extends JPanel{
    public ButtonsPanel(){
        super();
        this._initGUI();
    }

    private void _initGUI(){
        // here add all the buttons you want..
    }
}

我不知道这是否是最好的方法,但它运行良好

CardLayout
是一个好的开始。您可以考虑创建一个半透明的面板,当用户希望输入数据时,可以将其覆盖在 GAMEPANE/CODE>中,如果可能的话,在其下方暂停游戏。这需要
GamePane
本身有自己的布局,比如
OverlyLayout
或者甚至是
GridBagLayout
谢谢,我假设我在自己的类中创建ButtonsPanel和GraphicsPanel?