【发布时间】:2016-12-18 02:32:47
【问题描述】:
这是一个示例类
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;
}
}
代码的结果是这样的:
所以,我的问题是如何调整上图的固定尺寸?我想稍后在其上添加按钮等组件。在将 GridLayout 应用到 JPanel 后,我无法弄清楚如何设置 JPanel 的固定大小。我向它添加了 GridLayout,因为我需要它来显示类似于国际象棋的东西。除了按钮,我不会碰任何东西。 JPanel 是用来查看的。
我应该提一下,我会将网格中间的点更改为其他符号(例如 ! 或 #),以表示 5x5 空间中的对象。我使用 JLabel 来呈现对象。如果我使用 GridBagLayout,所有符号都被压缩在 1 个区域内。
【问题讨论】: