0
当包含GridLayout时,我可以为JFrame设置特定的边框大小吗?
这是一个示例类
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);
}
}
这是带有它
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的固定大小。我添加了GridLayout,因为我需要它显示与国际象棋类似的东西。除了按钮之外,我不会触摸任何东西。 JPanel是为了这个观点。
我应该提到我会将网格中间的点改为其他符号(如!或#)来表示5x5空间中的对象。我使用JLabel来呈现对象。如果我使用GridBagLayout,所有的符号都被压扁在一个区域中。
底部的画面是填充整个的JFrame JPanel中。我希望JPanel不要占用整个JFrame,这样我就可以添加一些空间来添加其他组件,如按钮 – NoobestPros
@NoobestPros:您需要嵌套JPanel才能达到这种效果,并且允许简单地创建复杂的GUI。请参阅编辑中的代码以回答。 –
例如,@camickr在创建此示例时发布的已删除评论中声明,如果您使用一个BorderLayout嵌套您的GridLayout-使用JPanel,则可以创建所需的GUI。 –