避免增加网格袋布局网格空间的大小

时间:2018-10-06 08:43:55

标签: java swing awt layout-manager gridbaglayout

我试图通过使用setText来不断更改JLabel的文本,如下所示:

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 :(得分:0)

  

有没有办法让我的文字不推右边的字段?

GridBagLayout像网格一样工作。如果更改网格中一个单元格的大小,则可能会影响周围其他单元格的大小/位置。

在您的情况下,您不希望有问题的组件控制列的宽度,因此您可以告诉组件占用两列的空间:

gbc.gridwidth = 2;

请阅读How to Use GridBagLayout的Swing教程中的部分,以获取有关约束和工作示例的更多信息。