【问题标题】:GridBagConstraints not right aligning with GridBagConstraints.EASTGridBagConstraints 与 GridBagConstraints.EAST 不正确对齐
【发布时间】:2013-12-09 13:36:23
【问题描述】:

我希望我的多行标签右对齐...不知道为什么这太难了。我尝试使用 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);

底部的文本块应该紧贴右侧。感谢您的帮助。

【问题讨论】:

  • 我以前从未听说过 JMultilineLabel。你可以试试 rightLblChatText.setHorizo​​ntal 或 rightLblChatText.selAlignmentX。
  • 它是一个自定义标签实现...我认为 GBL 对我不起作用,因为我已经尝试过了

标签: java swing layout gridbaglayout


【解决方案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 是你的标签。

【讨论】:

  • 问题是我希望它正确填充和对齐。我将不得不在这里提出另一个解决方案(也许添加 JPanel 和不同的布局)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
相关资源
最近更新 更多