Java Netbeans IDE 6.91“;水平居中“;不可点击

Java Netbeans IDE 6.91“;水平居中“;不可点击,java,netbeans,layout,centering,Java,Netbeans,Layout,Centering,我擅长java编程,但对GUI开发非常陌生。我想把我多年前制作的一款21点游戏机制作成一款人们可以通过我使用netbeans构建的GUI玩的游戏机。我认为如果没有GUI,当我将游戏添加到我的工作组合中时,大多数人不会认真对待它 我创建了一个大小设置为1000X700像素的JFRAME,上面是一个背景为深绿色的JPanel,用来模拟21点桌面 在深绿色JPanel的顶部,我有一个小的60X93 JLabel,图标设置为扑克牌的背面。这代表了经销商,我想将其水平和垂直居中放置在它所在的JPanel顶

我擅长java编程,但对GUI开发非常陌生。我想把我多年前制作的一款21点游戏机制作成一款人们可以通过我使用netbeans构建的GUI玩的游戏机。我认为如果没有GUI,当我将游戏添加到我的工作组合中时,大多数人不会认真对待它

我创建了一个大小设置为1000X700像素的JFRAME,上面是一个背景为深绿色的JPanel,用来模拟21点桌面

在深绿色JPanel的顶部,我有一个小的60X93 JLabel,图标设置为扑克牌的背面。这代表了经销商,我想将其水平和垂直居中放置在它所在的JPanel顶部

但是,在特定GUI的netbeans工具栏中,“水平居中”和“垂直居中”选项变灰,即使在我选择经销商JLabel时也无法单击。我甚至尝试按住shift键并单击以选择它所在的JLabel和JPanel,但“水平居中”和“垂直居中”选项仍然变灰


有人能帮助我或提供指导吗?非常感谢。我花了两天时间在谷歌上搜索,我不明白为什么其他人没有遇到同样的问题。

有趣的问题。我已经使用NetBeans多年了,老实说,在你指出这些图标之前,我从未注意到它们。我也无法让他们做任何事情

但是,如果您不熟悉Java中的GUI开发。。。您应该阅读有关布局管理器的内容,并花一些时间与您的团队合作。GridBagLayout是目前Swing开发中最流行的布局管理器。如果您愿意,您可以只使用它,因为实际上只有少数真实的word情况下使用另一个布局管理器更有意义

出于您的直接目的:在Inspector视图中,右键单击JPanel并选择“设置布局->网格袋布局”。现在,您将在JPanel正下方的Inspector树视图中看到布局管理器。右键单击它并选择“自定义”。将弹出一个窗口,在那里您可以单击您感兴趣的任何组件并调整各种设置(例如边距、填充等)。您感兴趣的设置是“锚定”,您想要的值是“中心”。选择JLabel后,您可以从左上角的下拉菜单调整此设置。。。或以图形方式显示在顶部和底部


不管怎样,如果您要进行任何类型的Java GUI开发,而不仅仅是最简单的“Hello World”示例。。。您很快就会使用GridBagLayout。所以你还是跳进去吧

让我解释一下工具按钮选项“水平居中”和“垂直居中”

Matisse Designer上提供的所有六个工具栏按钮都用于对齐彼此相关的组件。只有在设计器上选择多个组件时,这些按钮才会激活

当我们在designer窗口上选择两个或多个组件(可能是JPanel或JFrame)并单击“水平居中”按钮时,所有选定的控件(组件)将一个接一个地对齐,以便所有组件的中心点位于一条垂直线上。这意味着它们将在水平方向上移动,以使它们在另一个下方正好对齐

“垂直居中”按钮在垂直方向上执行此对齐。因此,为了回答您的问题,您在JFrame中用于使组件居中的工具是不正确的工具。它们用于相对地对齐组件,而不是容器

如果选择JPanel和JPanel内部的组件,则工具按钮将被禁用。仅当在同一容器中选择了零部件(即位于同一容器下的零部件)时,对齐设置按钮才可用

要将组件安排在JFrame的中心,您可能需要添加一些自定义代码或使用其他布局管理器,而不是设计器默认使用的组布局

关于

Nagpur的Tushar Joshi

请帮助我了解您真正想要实现的目标。是否希望即使用户调整框架的大小,组件仍保持在中心位置?或者你只想在框架中间的设计时间集中组件?即使调整大小…我想让它看起来尽可能专业。嗯,这个网格布局看起来很棘手。。。在将面板设置为GridBagLayout之前,是否必须将所有想要的组件添加到画布中?或者我可以一开始就有一个标签。。。设置GridBagLayout,然后添加更多组件,然后继续调整GridBag设置?这件事看起来像是一场噩梦,但所有值得学习的东西,我想我必须为这件事付出一些血、汗水和眼泪才能最终得到它。遗憾的是,没有具体的教程指导您完成一些事情,因为帮助部分只是值的定义。。。呃,我会记下来并学习它,即使它会杀了我。@Martin:当你使用NetBeans而不是手工编写代码时,它就不那么复杂了。如果您先声明组件,然后声明布局管理器,或者反过来,这其实并不重要。。。NetBeans将简单地解决这个问题。但是如果我正确地理解了你上面的第一个评论,答案是后者。使用GridBagLayout与在HTML中使用表非常相似。。。在添加新元素(即行和列)时,可能需要稍微调整现有的行和列。难以置信。。。因为我对HTML有相当的了解,所以我完全知道你在说什么。@Martin:如果答案有用的话,你随时可以接受!:)@马丁:你的问题是关于“水平居中”,如果我的解释回答了你的问题,那么请接受我的回答。