2
即使指定了.weightx,.weighty和.anchor,GridBagConstraints也无法正常工作。 我需要将组件设置在左上方,但它始终设置在屏幕的中心。以下是我用于定位组件的方法。GridBagConstraints不正确对齐JRadioButton框
private void initGUI(){
getContentPane().setLayout(new GridBagLayout());
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(450, 450));
Box buttonBox = Box.createVerticalBox();
ButtonGroup buttons = new ButtonGroup();
buttons.add(okOnly);
buttons.add(okCancel);
buttons.add(yesNoCancel);
buttons.add(yesNo);
buttonBox.add(okOnly);
buttonBox.add(okCancel);
buttonBox.add(yesNoCancel);
buttonBox.add(yesNo);
buttonBox.setBorder(BorderFactory.createTitledBorder("Buttons"));
GridBagConstraints gridConstraints = new GridBagConstraints();
gridConstraints.gridx = 0;
gridConstraints.gridy = 0;
gridConstraints.anchor = GridBagConstraints.NORTHWEST;
gridConstraints.weightx = 1;
gridConstraints.weighty = 1;
panel.add(buttonBox, gridConstraints);
getContentPane().add(panel);
}
去过,因为我用网格包的东西,所以这可能一会儿是一个愚蠢的评论,但是:您的GridBagLayout位于内容窗格上,但是当您将buttonBox添加到其他面板时,您会传递约束条件。你确定这一切是正确的吗? – John3136
@ John3136:不,它不行。见下面的代码。 –
是的,问题是没有面板的布局管理器,我也添加了它。谢谢你的收获。 – programmer