【发布时间】:2016-06-30 05:27:50
【问题描述】:
我正在使用网格包为我的应用程序构建一个 GUI 布局,并且我试图想出一个函数来布局每个元素,这样我就不必重复输入相同的网格包代码了超过。我想重写这段代码:
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints bc = new GridBagConstraints();
this.setLayout(gridbag);
bc.fill = GridBagConstraints.HORIZONTAL;
bc.anchor = GridBagConstraints.WEST;
bc.insets = new Insets(0, 10, 10, 0);
bc.gridx = 0;
bc.gridy = 0;
bc.gridwidth = 1;
this.add(programNameLabel, bc);
所以它可以写成这样调用一个函数:
labelPosition(GridBagConstraints.HORIZONTAL, GridBagConstraints.WEST, 0, 10, 10, 0, 0, 0, 1, programNameLabel);
这是我为该任务编写的函数。
protected void labelPosition(int axis, int direction, int insetOne, int insetTwo, int insetThree, int insetFour, int gridX, int gridY, int gridWidth, JLabel name)
{
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints bc = new GridBagConstraints();
this.setLayout(gridbag);
bc.fill = axis;
bc.anchor = direction;
bc.insets = new Insets(insetOne, insetTwo, insetThree, insetFour);
bc.gridx = gridX;
bc.gridy = gridY;
bc.gridwidth = gridWidth;
this.add(name, bc);
}
现在它可以编译了,但是当我运行它时,它不起作用。所有标签都显示在一行中,而不是我正在寻找的布局中。
我正在尝试做的事情是可能的还是我在代码中遗漏了什么?有什么建议吗?
【问题讨论】:
标签: java swing layout-manager gridbaglayout