Избегайте увеличения размера сетки сетки - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь изменить текст JLabel, используя setText, например так:

public void nextCard(Player player, PlayingCard card, GameEngine engine) {
    // Displaying the card
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            //Adding on new card to one drawn.
            playerHand.setText(String.format("%s[%s %s] ", playerHand.getText(),card.getSuit(),card.getValue()));
        }
    });

}

Метка имеет следующие ограничения мешка сетки:

            gbc.fill = 0;
            gbc.gridx = 1;
            gbc.gridy = 2;
            gbc.weightx = 0;
            gbc.anchor = GridBagConstraints.NORTHWEST;
            add(playerHand, gbc);

Всякий раз, когдатекст добавляется к метке, он продолжает перемещать все остальное, например, так: https://gyazo.com/489c9ebf0ca2e5a162ed9066a771787b

Есть ли способ, которым я мог бы сделать так, чтобы этот текст не выдвигал поле справа?

1 Ответ

0 голосов
/ 06 октября 2018

Есть ли способ, чтобы этот текст не выдвигал поле справа?

GridBagLayout работает как сетка.Если вы измените размер одной ячейки в сетке, это может повлиять на размер / размещение других вокруг нее.

В вашем случае вы не хотите, чтобы рассматриваемый компонент управлял шириной столбца, поэтому вы можете указать компоненту занять пространство двух столбцов:

gbc.gridwidth = 2;

Читатьраздел из учебника Swing по Как использовать GridBagLayout для получения дополнительной информации об ограничениях и рабочих примерах.

...