GridBagConstraints неправильно выравнивается с GridBagConstraints.EAST

Я хочу, чтобы моя многострочная метка была выровнена по правому краю... не знаю, почему это так сложно. Я попытался использовать 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);

введите здесь описание изображения

Нижний фрагмент текста должен охватывать правую сторону. Спасибо за любую помощь.


person KisnardOnline    schedule 24.11.2013    source источник
comment
Я никогда раньше не слышал о JMultilineLabel. Вы можете попробовать rightLblChatText.setHorizontal или rightLblChatText.selAlignmentX.   -  person Gilbert Le Blanc    schedule 25.11.2013
comment
Это настраиваемая реализация Label... Я думаю, что GBL не будет работать для меня, потому что я пробовал это   -  person KisnardOnline    schedule 25.11.2013


Ответы (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 — это ваш лейбл.

person alex2410    schedule 25.11.2013
comment
Проблема в том, что я хочу, чтобы он был заполнен и выровнен правильно. Мне придется придумать другое решение здесь (возможно, добавив JPanels и разные макеты) - person KisnardOnline; 25.11.2013