我可以在JFrame包含GridLayout时为其设置特定的边框大小吗?

时间:2016-12-18 02:32:47

标签: java swing awt

enter image description here

这是一个示例类

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

public class Image {

public static void main(String[] args) {

        JFrame f = new JFrame();
      Layout lo = new Layout();

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(new Dimension(500, 500));
        f.setLocationRelativeTo(null);
        f.getContentPane().add(lo.getGUI(), BorderLayout.CENTER);
        f.setVisible(true);
        }
}

这是随附的Layout类

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

public class Layout {

    private JPanel p;

    public Layout() {
        p = new JPanel(new GridLayout(5, 5, 1, 1));
        p.setBackground(Color.BLACK);

        JLabel[][] lbs = new JLabel[5][5];

        for (int i = 0; i < 5; i++)
            for (int j = 0; j < 5; j++) {
                lbs[i][j] = new JLabel(".", JLabel.CENTER);
                lbs[i][j].setBackground(Color.WHITE);
                lbs[i][j].setOpaque(true);
                p.add(lbs[i][j]);
            }
    }

    public JComponent getGUI() {
        return p;
    }
}

代码的结果如下:

enter image description here

所以,我的问题是如何像上面的图像那样调整固定大小?我想稍后在其上添加组件,如按钮。在将GridLayout应用到JPanel后,我无法弄清楚如何设置固定大小的JPanel。我添加了GridLayout因为我需要它来显示类似于国际象棋的东西。除按钮外,我不会碰任何东西。 JPanel用于查看它。

我应该提到我将把网格中间的点改为其他符号(例如!或#)来表示5x5空间中的对象。我使用JLabel来呈现对象。如果我使用GridBagLayout,所有符号将被压缩在一个区域中。

1 个答案:

答案 0 :(得分:2)

我不确定我是否100%理解你所要求的内容,但如果你的愿望是网格周围的空白空间,那么你所寻找的可能就是一个空的顺序,可以通过{{1}轻松获得其中gap是边框的大小,当然可以是每一边的唯一值。

不要忘记嵌套JPanels,每个都使用自己的布局,以获得最大的布局效果。例如,下面的代码由下面的代码生成:

enter image description here

BorderFactor.createEmptyBorder(gap, gap, gap, gap);