使用Swing WYSIWYG编辑器动态调整按钮网格大小?

时间:2013-01-10 11:14:33

标签: java swing netbeans

我试图用Java编写我的第一个基于GUI的游戏,我选择了扫雷。我是Java中的新手(虽然我可以设法编写游戏的逻辑部分而不是"新手"在"我不知道什么是类&# 34;感觉)和Swing中的一个完整的新生,所以我喜欢,如果我可以使用所见即所得编辑器(如NetBeans)编辑器而不是手工编写布局。

然而,在使用编辑器之后,根据我目前的理解,我只能使用Netbeans编辑器设置不同数量的不同容器 - 我的意思是,我必须提前知道电路板的尺寸是多少具有。但是,我希望电路板能够动态调整大小,以便用户可以使用31个炸弹在9x9网格上玩,以及使用3个炸弹在100x105网格上玩。你能创建这样的动态调整大小(当然不是动态调整 - 我的意思是用户可以决定他在开始游戏时想要播放的网格)还有WYSIWYG编辑器的按钮网格,或者这样的事情需要编码所有你自己从头开始?

2 个答案:

答案 0 :(得分:2)

  • 手工编写布局,这完全适用于GridLayout

  • 使用JButton,最好将JToggleButton用于Icon

  • JButton / JToggleButton

  • 使用适当的setXxxIcon methods

答案 1 :(得分: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%
}

这也是我创建动态宽度定义列宽的表格。