我用Java构建游戏,现在我正在处理游戏的GUI。 这是我想要的设计。
我的问题是,将每个面板作为一个扩展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设计模式进行此类通信?