所以我正在使用GridBagLayout,我正在尝试在JPanel的中心创建一个JButton,然后在JPanel的顶部有一个JLabel . 当我尝试这样做时,按钮和标签没有对齐 .
码:
package view;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class StartPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
//Declare our global variables
JButton btnUploadProject;
JLabel heading;
GridBagConstraints gbc;
GridBagConstraints gbc2;
/**
* Create the panel.
*/
public StartPanel() {
//Set up Panel
this.setVisible(true);
setLayout(new GridBagLayout());
//Create the components
btnUploadProject = new JButton("Upload A Project");
heading = new JLabel("Heading test");
gbc = new GridBagConstraints();
gbc2 = new GridBagConstraints();
//Modify components
btnUploadProject.setPreferredSize(new Dimension(400,100));
btnUploadProject.setFont(new Font("Arial", Font.PLAIN, 40));
heading.setFont(new Font("Arial", Font.PLAIN, 40));
gbc.anchor = GridBagConstraints.CENTER;
gbc2.anchor = GridBagConstraints.NORTH;
gbc2.weighty = 1.0;
//Add the buttons
this.add(btnUploadProject, gbc);
this.add(heading, gbc2);
}
}
对齐错误的图像:
1 回答
我相信你的“问题”来自错误使用锚参数 .
来自https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html:
因此,锚用于指定组件在其单元格中的位置 .
这里有两个单元格:
第一个(x:0,y:0):包含你的按钮,锚点= CENTER,你的按钮显示在单元格的中心
第二个(x:1,y:0):包含带锚= NORTH的标签,您的标签显示在单元格的北部
如您所见,单元格位于同一行 . 如果要将按钮放在标签下方,请使用gridx / gridy约束:
尝试: