Java 为什么JLabel不遵循GridLayout以及如何消除两者之间的间隙?

Java 为什么JLabel不遵循GridLayout以及如何消除两者之间的间隙?,java,swing,awt,jlabel,imageicon,Java,Swing,Awt,Jlabel,Imageicon,我在这里的应用程序是关于拼凑一个由六个独立部分组成的整体图像。我将它们声明为JLabels,并使用GridLayout设置布局。但是,jlabel不在给定的行和列之后,并且它们之间存在间隙 你认为我在什么地方编错了代码吗? 谢谢 设置JPanel的布局,而不是JFrame GridLayout myGrid = new GridLayout(2, 3, 0, 0); thePanel.setLayout(myGrid); 默认情况下,使用设置JPanel的布局,而不是JFrame GridLa

我在这里的应用程序是关于拼凑一个由六个独立部分组成的整体图像。我将它们声明为
JLabels
,并使用
GridLayout
设置布局。但是,
jlabel
不在给定的行和列之后,并且它们之间存在间隙

你认为我在什么地方编错了代码吗? 谢谢


设置
JPanel
的布局,而不是
JFrame

GridLayout myGrid = new GridLayout(2, 3, 0, 0);
thePanel.setLayout(myGrid);

默认情况下,使用设置
JPanel
的布局,而不是
JFrame

GridLayout myGrid = new GridLayout(2, 3, 0, 0);
thePanel.setLayout(myGrid);
默认情况下使用

尝试以下操作:

public class Main extends JFrame
{
    public Main()
    {
        super("Title");
        setLayout(new BorderLayout());
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(2,3);

        ImageIcon i = new ImageIcon("IMAGES/chunkE.gif");
        ImageIcon j = new ImageIcon("IMAGES/chunkC.gif");
        ImageIcon k = new ImageIcon("IMAGES/chunkB.gif");
        ImageIcon l = new ImageIcon("IMAGES/chunkI.gif");

        JLabel label1 = new JLabel(i);
        JLabel label2 = new JLabel(j);
        JLabel label3 = new JLabel(k);
        JLabel label4 = new JLabel(l);

        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
        panel.add(label4);

        add(panel, BorderLayout.NORTH);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args)
    {
        Main m = new Main();
    }
}
试试这个:

public class Main extends JFrame
{
    public Main()
    {
        super("Title");
        setLayout(new BorderLayout());
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(2,3);

        ImageIcon i = new ImageIcon("IMAGES/chunkE.gif");
        ImageIcon j = new ImageIcon("IMAGES/chunkC.gif");
        ImageIcon k = new ImageIcon("IMAGES/chunkB.gif");
        ImageIcon l = new ImageIcon("IMAGES/chunkI.gif");

        JLabel label1 = new JLabel(i);
        JLabel label2 = new JLabel(j);
        JLabel label3 = new JLabel(k);
        JLabel label4 = new JLabel(l);

        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
        panel.add(label4);

        add(panel, BorderLayout.NORTH);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }

    public static void main(String[] args)
    {
        Main m = new Main();
    }
}

酷!非常感谢你的帮助,你的解释让我明白了为什么它不起作用。干杯酷!非常感谢你的帮助,你的解释让我明白了为什么它不起作用。干杯@j-B谢谢你的帮助,伙计,我已经纠正了我的错误,干杯@j-B谢谢你的帮助,伙计,我已经纠正了我的错误,干杯@peeskillet嗨,非常感谢你的编辑。你是怎么做的?为什么?干杯我刚刚添加了代码高亮显示。您可以用反勾(`)环绕代码以突出显示代码。要进行一般编辑,只需单击文章底部的编辑链接。您可以通过单击“编辑X天前”的链接查看编辑历史记录。这只是我们如何帮助社区的问题/帖子保持干净。也请参见@peeskillet oic,但当您突出显示代码时,它实际上做了什么?它是否有助于说明何时在搜索引擎中进行其他搜索?@peeskillet嗨,非常感谢您的编辑。你是怎么做的?为什么?干杯我刚刚添加了代码高亮显示。您可以用反勾(`)环绕代码以突出显示代码。要进行一般编辑,只需单击文章底部的编辑链接。您可以通过单击“编辑X天前”的链接查看编辑历史记录。这只是我们如何帮助社区的问题/帖子保持干净。也请参见@peeskillet oic,但当您突出显示代码时,它实际上做了什么?它是否有助于说明何时在搜索引擎中进行其他搜索?