Java GridBagLayout可以';我无法正确设置GUI
我正在尝试做一个Tictatcoe游戏。对于3x3 Tictaoe表,我使用了9个按钮。然而,按钮上方和下方的jtext似乎会改变每个3x3按钮的长度。有没有一种方法可以使3x3按钮大小相等,而不受其他组件的干扰Java GridBagLayout可以';我无法正确设置GUI,java,swing,jpanel,layout-manager,gridbaglayout,Java,Swing,Jpanel,Layout Manager,Gridbaglayout,我正在尝试做一个Tictatcoe游戏。对于3x3 Tictaoe表,我使用了9个按钮。然而,按钮上方和下方的jtext似乎会改变每个3x3按钮的长度。有没有一种方法可以使3x3按钮大小相等,而不受其他组件的干扰 import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; im
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Dimension;
public class makeGUI {
JFrame frame;
public void initialise() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel playPanel = new JPanel();
playPanel.setPreferredSize(new Dimension(300, 500));
playPanel.setBackground(Color.WHITE);
playPanel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JTextField field = new JTextField(5);
field.setEditable(false);
c.gridwidth = 2;
c.gridx = 0;
c.gridy = 0;
playPanel.add(field, c);
JButton button = new JButton("");
//c.weightx = 0.5;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 2;
c.gridy = 2;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 1;
c.gridy = 3;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
button = new JButton("");
c.fill = GridBagConstraints.HORIZONTAL;
//c.weightx = 0.5;
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 1;
button.setPreferredSize(new Dimension(40, 40));
playPanel.add(button, c);
field = new JTextField(5);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 4;
playPanel.add(field, c);
button = new JButton("Submit");
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.5;
c.gridx = 2;
c.gridy = 4;
playPanel.add(button, c);
frame.add(playPanel);
frame.setTitle("A Simple Card Game");
frame.setSize(400, 700);
frame.pack();
frame.setVisible(true);
}
}
这就是我现在拥有的:
我想要像这样的东西:
我就是这样将这个GUI分解成几个部分的:
-
<强>红色>强>中间区域,<代码> GridLayout < /代码>。网格布局将确保每个单元的宽度为其包含的最高组件的最宽和高度
- 底部的绿色边界区域将是一个居中的
流程布局
- 蓝色带边框的外部面板将使用
。这又将包括:边框布局
页面中的标签\u START
中心的网格布局
页面末尾的
流程布局