1

我正在尝试用 Java 编写我的第一个基于 GUI 的游戏,我选择了扫雷。我是 Java 的新手(虽然我可以设法对游戏的逻辑部分进行编程,所以不是“我不知道什么是类”意义上的“新手”)和 Swing 的完整新生,所以我会如果我可以将所见即所得编辑器(如 NetBeans 编辑器)用于图形部分,而不是手动编写布局,我会很高兴。

然而,在玩过编辑器之后,就我目前的理解而言,我只能用 Netbeans 编辑器设置恒定数量的不同容器——我的意思是,我必须提前知道板子必须有哪些尺寸。但是,我希望棋盘能够动态调整大小,以便用户可以在 9x9 网格上播放 31 个炸弹,以及在 100x105 网格上播放 3 个炸弹。你能用所见即所得编辑器创建这样的动态调整大小(当然不是即时调整 - 我的意思是用户可以决定他在开始游戏时要在哪个网格上玩)按钮网格,或者这样的事情需要全部编码自己从头开始?

4

2 回答 2

2
  • 手工编写布局,这正是为GridLayout

  • 使用JButton,更好的是使用JToggleButtonwithIcon

  • 使用正确setXxxIcon methodsJButton/JToggleButton

于 2013-01-10T11:24:16.880 回答
1

呃 - 请不要使用 GUI 编辑器进行操作。您可能会创建太多可变的功能组件。

请至少自己编写部分代码 - 您可能在扫雷字段上使用的按钮应该很容易在循环中创建。该按钮有一个数据字段,您可以将其用于字段的状态(炸弹、无炸弹、隐藏、标记、空)。因此,当您为按钮创建 ONE Actionlistener 时,您应该能够在那里做出反应。

您真正的问题:是的,这在很大程度上取决于您使用的布局。避免调整大小,当您需要设置按钮大小时,请始终参考 100% 的基数:

setButtonSize(){
  int iWindowWidth = 437; // example, can be any value. Stands for 100%
  button1.setWidth((int)(iWindowWidth * 0.2)); // 20%
  button1.setWidth((int)(iWindowWidth * 0.3)); // 30%
  button1.setWidth((int)(iWindowWidth * 0.05));//  5%
  button1.setWidth((int)(iWindowWidth * 0.45));// 45%
}

这也是我创建具有定义列宽的动态宽度的表的方式。

于 2013-01-10T11:34:09.240 回答