java - 在 GridLayout 中调整 JLabels 的大小

标签 java swing jlabel grid-layout

我有一个非常简单的 Java 程序(见下文)。 GridLayout 有 20 行和 4 列。如您所知,元素应该通过(GridLayout)定义水平添加。但是,我将两个元素(标签)垂直放置在另一个元素之上。

我给它们上色并意识到标签占据了整行,因此产生了垂直效果。但后来我还对每个使用了 setSize(5,5) 来使它们变小,但它们仍然占据整行。关于为什么会发生这种情况以及如何修复/设置较小的尺寸等有什么建议吗?

public class Sam extends JFrame {

    public JButton btn_arr;
    public Container c;
    public JLabel[] lbl = new JLabel[20];


    public Sam()
    {
        c = getContentPane();
        c.setLayout(new GridLayout(20,4));
        lbl[1] = new JLabel("Column1");
        c.add(lbl[1]);

        lbl[2] = new JLabel("Column2");
        c.add(lbl[2]);

        show();     
    }

    public static void main(String[] args) 
    {
        Sam x = new Sam();
        x.setVisible(true);
        x.setSize(7500,4500);
    }

}

最佳答案

您只需向网格中添加两个组件,以便它们将其填满。您需要向网格添加更多组件作为占位符,以便将原始 JLabels 放置在适当的位置,也许是空的 JLabels 或 JPanel。

顺便说一句,您应该避免设置任何 Swing 组件的大小。你现在的7500、4500的尺寸有点偏大了。

顺便说一句,也许您想在这里使用 JTable。

编辑:如果您想要一个具有 4 列和可变行数的 GridLayout,请使用 0 作为 GridLayout 行常量:

c.setLayout(new GridLayout(0, 4));

例如,

import java.awt.*;
import javax.swing.*;

public class Sam extends JFrame {
   public static final int COLUMN_COUNT = 4;

   public JButton btn_arr;
   public Container c;
   public JLabel[] lbl = new JLabel[COLUMN_COUNT];

   public Sam() {
      c = getContentPane();
      c.setLayout(new GridLayout(0, COLUMN_COUNT));

      for (int i = 0; i < lbl.length; i++) {
         lbl[i] = new JLabel("Column " + (i + 1));
         c.add(lbl[i]);
      }

   }

   public static void main(String[] args) {
      Sam x = new Sam();
      x.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      x.pack();
      x.setLocationRelativeTo(null);
      x.setVisible(true);
      // x.setSize(7500,4500);
   }

}

但我仍然想知道 JTable 在这里是否会工作得更好。

关于java - 在 GridLayout 中调整 JLabels 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091812/

相关文章:

java - 重新加载 log4j 附加程序

java - Java中的for循环捕获异常

Java - 从 JsonObject 中删除与正则表达式匹配的键

java - 使用 ArrayList 绘制图像(JPanel、JFrame)

java - JLabel 点击效果如 "Mac OS"系统偏好设置的图标

java - 在标签中看不到滚动 Pane - Swing

Java webapp 部署 : explode or not to explode?

使用 Swing 的 Java 聊天应用程序(概念)

java - 在java中将图像图标添加到组合框

java - 面板 setBackground 弄乱了 JLabels 的颜色