对于我的 CSE 205(Java 编程 2)课程,我们必须设计一个非常简单的 GUI 小程序。我对 Swing 非常熟悉,之前在我自己的一些项目中使用过它。我设计的程序几乎没有问题,当从 Eclipse 运行时,它在我的计算机上看起来很完美:
但是当我在线提交它时,它在浏览器中运行时,用户界面变得严重失智,恢复到默认状态:
我已经习惯了使用 GridBagLayout,因为它很简单。这就是我在这里使用的。CreatePanel 和 SelectPanel 类(如第一张图片所示)都扩展了 JPanel(根据我的教授)。我设置每个使用:
this.setLayout(new GridBagLayout());
以及每个组件:
//Call the method addItem() to add the create button to the panel
addItem(this, createB,0,2,2,1,defaultInset,GridBagConstraints.CENTER);
//-------
public void addItem(JPanel p, JComponent c, int x, int y, int width, int height, int[] inset, int align)
{
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = x;
gc.gridy = y;
gc.gridwidth = width;
gc.gridheight = height;
gc.weightx = 0;
gc.weighty = 0;
gc.insets = new Insets(inset[0],inset[1],inset[2],inset[3]);
gc.anchor = align;
gc.fill = GridBagConstraints.NONE;
p.add(c, gc);
}
有人对可能发生的事情有任何想法吗?考虑到我一半以上的时间都花在让布局看起来正确上,我想要一个简单的修复。如果需要,我可以发布更多代码。感谢您的任何建议。
- 编辑 -
好吧,我根据@MadProgrammer 的建议做了一些尝试。我想我已经缩小了问题所在。
这是我用来将 JTextField 的大小设置到标签“输入宠物类型:
petTypeTF = new JTextField("");
petTypeTF.setPreferredSize(new Dimension(125, 60));
现在,如果我将代码更改为其他任何内容,例如设置列数:
petTypeTF = new JTextField("",12);
petTypeTF.setPreferredSize(new Dimension(125, 60));
当我在线提交它时,我得到的 UI 看起来与它相同。与设置列数有关的事情似乎搞砸了。这对任何人都有帮助吗?