GridBagConstraints与GridBagConstraints.EAST不对齐

时间:2013-11-24 23:57:31

标签: java swing layout gridbaglayout

我希望我的多线标签正确对齐...不确定为什么这太难了。我尝试过使用weightx并添加了一个空白的jlabel并赋予它1.0的重量。我不能让这个工作。这个想法是一个人全部左对齐而另一个人正确对齐。 (有点像发短信的应用程序)。谁能提出建议?我一直试图找到类似的帖子,但有很多线程与GBLayout问题!

JLabel rightLblName = new JLabel(npcName);
GridBagConstraints gbc_rightLblName = new GridBagConstraints();
gbc_rightLblName.anchor = GridBagConstraints.EAST;
gbc_rightLblName.insets = new Insets(0, 0, 5, 5);
gbc_rightLblName.gridx = 5;
gbc_rightLblName.gridy = 2;
DialogueJInternalFrame.dialoguePanel.add(rightLblName, gbc_rightLblName);

JLabel rightLblImage = new JLabel("");
rightLblImage.setIcon(new ImageIcon(SpriteSheetCutter.makeColorTransparent((BufferedImage) SpriteStore.get().getSprite(npcFilename).getImage())));
rightLblImage.setBorder(DialogueJInternalFrame.raisedetched);
GridBagConstraints gbc_rightLblImage = new GridBagConstraints();
gbc_rightLblImage.insets = new Insets(0, 0, 5, 0);
gbc_rightLblImage.gridx = 6;
gbc_rightLblImage.gridy = 2;
DialogueJInternalFrame.dialoguePanel.add(rightLblImage, gbc_rightLblImage);

JMultilineLabel rightLblChatText = new JMultilineLabel(valuesSplit[1]);
GridBagConstraints gbc_rightLblChatText = new GridBagConstraints();
gbc_rightLblChatText.fill = GridBagConstraints.HORIZONTAL;
gbc_rightLblChatText.anchor = GridBagConstraints.EAST;
gbc_rightLblChatText.gridwidth = 7;
gbc_rightLblChatText.insets = new Insets(0, 0, 5, 0);
gbc_rightLblChatText.gridx = 0;
gbc_rightLblChatText.gridy = 3;
DialogueJInternalFrame.dialoguePanel.add(rightLblChatText, gbc_rightLblChatText);

enter image description here

底部文本块应该是右侧。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我认为你的问题在下一行gbc_rightLblChatText.fill = GridBagConstraints.HORIZONTAL;

如果你anchor的效果松散,将fill属性设置为gbc_rightLblChatText.fill = GridBagConstraints.NONE;,它会对你有帮助。

编辑:在这种情况下,您的标签扩展JLabel使用下一个代码,它会将您的组件与EAST对齐:

gbc_rightLblChatText.weightx = 1;
gbc_rightLblChatText.fill = GridBagConstraints.HORIZONTAL;
jLabel.setHorizontalAlignment(JLabel.RIGHT);

jLabel是您的标签。