Java:GridBagLayout和GridBagConstraints
我很难理解网格约束是如何工作的。是否所有东西都处于“列和行”类型的状态,或者是否可以使用精确的像素规格(x:10Y:20->在角落中)。基本上,我只是想知道这是如何工作的,以及我所说的是否正确。多谢各位 某些代码:/:(错误代码)Java:GridBagLayout和GridBagConstraints,java,oracle,Java,Oracle,我很难理解网格约束是如何工作的。是否所有东西都处于“列和行”类型的状态,或者是否可以使用精确的像素规格(x:10Y:20->在角落中)。基本上,我只是想知道这是如何工作的,以及我所说的是否正确。多谢各位 某些代码:/:(错误代码) 我相信您使用的GridBagLayout和约束部分(grid)确实是基于程序左上角的行(x)和列(y)。尽管在布局中使用gridheight和gridwidth的方式略有不同,但也有其他方法可以做到这一点 了解更多语法:) 你看过吗?它确实有助于简化awt/swing
我相信您使用的GridBagLayout和约束部分(grid)确实是基于程序左上角的行(x)和列(y)。尽管在布局中使用gridheight和gridwidth的方式略有不同,但也有其他方法可以做到这一点 了解更多语法:)
你看过吗?它确实有助于简化awt/swing组件的布局。
GridBagLayout
本质上类似于行和列的表格,其中gridx/y
约束指定了单元格。可以在单元中定义零部件的约束。如果某个单元格的weightx/y
属性为cell,则该单元格将影响列/行中的所有其他单元格,也就是说,如果使单个单元格填充可用宽度,则该列中的所有单元格也将具有相同的宽度。这是一个高度灵活的GridLayout
。不,您无法获得像素完美的控制,但您可以使用一些技巧为单个单元中的组件提供一些缓冲
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.*;
public class Main{
public static void main(String[] args){
//Declaring JFrame, JPanel, JButton
JFrame frame = new JFrame();
JPanel panel = new JPanel();
GridBagConstraints gbc = new GridBagConstraints();
JButton button = new JButton("Click me");
//JFrame, frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
//JPanel, panel
panel.setLayout(new GridBagLayout());
frame.add(panel);
//JButton, button
gbc.gridx = 1;
gbc.gridy = 0;
gbc.insets = new Insets(1, 1, 1, 1);
panel.add(button, gbc);
frame.setVisible(true);
}
}