Java JPanel翻转,FlowLayout未按预期工作
前几天,这个代码起作用了。我更改了一些内容并重新运行了它,但现在它无法按预期工作。很明显,我改变了一些行为,但我已经返回并恢复了所有这些更改,但仍然不起作用。忽略这些信息(首先),为什么这段代码不在JPanel中放置一个15x15的JLabel网格Java JPanel翻转,FlowLayout未按预期工作,java,alignment,jpanel,jlabel,flowlayout,Java,Alignment,Jpanel,Jlabel,Flowlayout,前几天,这个代码起作用了。我更改了一些内容并重新运行了它,但现在它无法按预期工作。很明显,我改变了一些行为,但我已经返回并恢复了所有这些更改,但仍然不起作用。忽略这些信息(首先),为什么这段代码不在JPanel中放置一个15x15的JLabel网格 gameBoard.setLayout(new FlowLayout()); for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { J
gameBoard.setLayout(new FlowLayout());
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 15; j++)
{
JLabel tile = new JLabel("");
tile.setHorizontalAlignment(SwingConstants.CENTER);
tile.setPreferredSize(new Dimension(27, 27));
tile.setBorder(new EtchedBorder());
tile.setEnabled(false);
gameBoard.add(tile);
}
}
gameBoard.setLayout(新的FlowLayout());
对于(int i=0;i<15;i++)
{
对于(int j=0;j<15;j++)
{
JLabel tile=新JLabel(“”);
瓦片设置水平对齐(旋转角点中心);
瓷砖。设置首选尺寸(新尺寸(27,27));
tile.setboorder(新蚀刻边框());
tile.setEnabled(false);
游戏板。添加(平铺);
}
}
gameBoard是通过NetBeans的GUI生成器定义的JPanel。它有一个首选尺寸,一个最大尺寸(与首选尺寸相同)。水平/垂直可调整大小的选项是禁用的,但是当此代码运行时,每个按钮都会在一行中水平扩展,而不会中断
如果我理解正确的话,FlowLayout应该在元素到达其包含元素的末尾时包装元素。这种情况发生在今天之前,我真的不知道为什么这种行为停止了?最好使用一个
由于使用了新的外观、不同的字体或某些Java VM升级,流布局可能已更改。不建议为此用途定义流布局,因为您依赖的底层大小可能会因虚拟机或外观而有所不同。我发现使用流布局和控制非常成功,我将向任何人推荐它。您可以使用特定数量的像素定义列和行,也可以只使用
TableLayout。对于每个列和/或行,首选。非常好和灵活的布局。我们在任何地方都使用它。为了教人如何捕鱼:
修订控制系统很棒。甚至您的系统也在频繁地备份您的源代码
一种有用的调试技术是在调试成功之前将其删除。设置边框是否会导致代码中断。反过来说,你能不能编写一个简单的程序来演示这个问题。我已经解决了。显然,我必须在代码本身中设置preferredSize。仅仅在Netbeans属性窗口中设置它是不够的。奇怪。我不想有其他选择,而是想知道为什么组件从不包装。我不明白这个答案是如何排列的?它没有回答问题,提供了替代解决方案和可疑的指导@杰赫:我觉得这个答案是一个很好的回答潜在问题的尝试(我如何让它工作)。它简洁明了,并解释了这一选择背后的动机。然而,正如你所说,杰奇,它并没有完全回答OP的问题。出于这些原因,我认为这个答案不值得被OP选为公认的答案,但我认为值得投票支持,因为它可能会帮助其他陷入类似情况的人。嗨!过时的超链接:)
GridLayout gridLayout = new GridLayout(15, 15);