如何使用Swing正确设计GUI?

时间:2017-10-16 18:06:27

标签: java swing

我用Java构建游戏,现在我正在处理游戏的GUI。 这是我想要的设计。 enter image description here

我的问题是,将每个面板作为一个扩展JPanel的独立类,并将每个面板相应地添加到JFrame中是一个好主意吗?

例如,这是我的菜单面板

public class MenuPanel extends JPanel implements ActionListener{

    private OptionsDialog optionsDialog;

    public SidePanel(JFrame mainFrame){

        Box box = Box.createVerticalBox();

        optionsDialog = new OptionsDialog(mainFrame, "Options", true);
        setLayout(new GridBagLayout());
        Dimension size = getPreferredSize();
        size.width = 125;
        setPreferredSize(size);
        this.setBackground(new Color(140,100,70));

        JButton startGameButton = new JButton("Start Game");
        JButton scoreTableButton = new JButton("Score Table");
        JButton optionsButton = new JButton("Options");
        JButton rulesButton = new JButton("Rules");
        JButton exitButton = new JButton("Exit");

        startGameButton.addActionListener(this);
        scoreTableButton.addActionListener(this);
        optionsButton.addActionListener(this);
        rulesButton.addActionListener(this);
        exitButton.addActionListener(this);

        box.add(startGameButton);
        box.add(scoreTableButton);
        box.add(optionsButton);
        box.add(rulesButton);
        box.add(exitButton);
        add(box);
    }

    public void actionPerformed(ActionEvent e) {

            //optionsDialog.setVisible(true);
    }    
}

另一件事,我怎样才能通知每个面板在另一个面板上出现了变化?例如,用户更改了游戏选项并启动了游戏,我需要通知游戏面板根据新选项加载组件。我是否应该使用Observer设计模式进行此类通信?

0 个答案:

没有答案