前几天这段代码正常运作。我改变了一些东西并重新运行它,现在它没有按预期工作。显然我改变的行为改变了行为,但我已经回去并恢复了所有这些改变,但它仍然无效。忽略那一点信息(开始),为什么这段代码不会在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是通过NetBeans的GUI Builder定义的JPanel。它具有优选的尺寸,最大尺寸(与优选相同)。水平/垂直可调整大小的选项被禁用,但是当这段代码运行时,每个按钮都会水平延伸,而不会破坏。

如果我理解正确,FlowLayout应该在元素到达其包含元素的末尾时将其包装起来。这是在今天之前发生的,我真的不知道为什么这种行为会停止?

有帮助吗?

解决方案 4

我明白了。显然我必须在代码本身中设置preferredSize。仅在Netbeans属性窗口中设置它是不够的。奇怪。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top