Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel翻转,FlowLayout未按预期工作_Java_Alignment_Jpanel_Jlabel_Flowlayout - Fatal编程技术网

Java JPanel翻转,FlowLayout未按预期工作

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

前几天,这个代码起作用了。我更改了一些内容并重新运行了它,但现在它无法按预期工作。很明显,我改变了一些行为,但我已经返回并恢复了所有这些更改,但仍然不起作用。忽略这些信息(首先),为什么这段代码不在JPanel中放置一个15x15的JLabel网格

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);