Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GridBagConstraints与GridBagConstraints.EAST对齐不正确_Java_Swing_Layout_Gridbaglayout - Fatal编程技术网

Java GridBagConstraints与GridBagConstraints.EAST对齐不正确

Java GridBagConstraints与GridBagConstraints.EAST对齐不正确,java,swing,layout,gridbaglayout,Java,Swing,Layout,Gridbaglayout,我希望我的多行标签右对齐。。。不知道为什么这么难。我尝试使用weightx并添加了一个空白jlabel,并将其权重设置为1.0。我不能让它工作。这个想法是一个人是左对齐的,另一个人是右对齐的。(有点像短信应用程序)。有人能提出一些建议吗?我一直在寻找类似的帖子,但是有太多关于GBLayout的帖子 JLabel rightLblName = new JLabel(npcName); GridBagConstraints gbc_rightLblName = new GridBagConstrai

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


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

我想你的问题在下一行
gbc_rightLblChatText.fill=gridbagstraints.HORIZONTAL

这样,您就失去了
锚定的效果
,将
fill
属性设置为
gbc\u rightLblChatText.fill=GridBagConstraints.NONE,它将帮助您

编辑:似乎您的标签扩展了
JLabel
在本例中使用下一个代码,它将您的组件与
东对齐

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

jLabel
是您的标签。

我以前从未听说过JMultilineLabel。您可以尝试rightLblChatText.setHorizontal或rightLblChatText.selAlignmentX。这是一个自定义标签实现。。。我认为GBL对我来说不起作用,因为我已经尝试过了,问题是我希望它被正确地填充和对齐。我必须在这里想出另一个解决方案(可能添加JPanel和不同的布局)