JLabel和Icon在GridBagLayout中相互居中

时间:2013-05-29 09:13:13

标签: java swing constraints gridbaglayout

我有一个具有此布局的面板:

enter image description here

在图标前面有一个带有以下labelConstraints的JLabel,图标上有lastConstraints,以便在JLabel之后显示:

  GridBagConstraints lastConstraints = new GridBagConstraints();
  GridBagConstraints labelConstraints = new GridBagConstraints();

  lastConstraints.fill = GridBagConstraints.HORIZONTAL;
  lastConstraints.anchor = GridBagConstraints.NORTHWEST;
  lastConstraints.weightx = 1.0;
  lastConstraints.gridwidth = GridBagConstraints.REMAINDER;
  lastConstraints.insets = new Insets(8, 4, 8, 8);

  labelConstraints = (GridBagConstraints) lastConstraints.clone();
  labelConstraints.weightx = 0.0;
  labelConstraints.gridwidth = 1;

现在我想让图标(或JLabel)以标签(或图标)为中心,如下所示:

enter image description here

我怎样才能做到这一点?我不想将图标放入JLabel,因为我需要将它放在它自己的JLabel中(因为我想稍后更改图标)。

2 个答案:

答案 0 :(得分:2)

你可以尝试

吗?
lastConstraints.anchor = GridBagConstraints.CENTER;

答案 1 :(得分:1)

最简单的方法是将标签放在标签上;您可以随时使用setIcon()更改图标。或者,使用BoxLayout对齐或GroupLayout.Alignment