Java:如何在2x2 GridLayout中更改JLabel的顺序?

用户2019645

我有一个问题,我正在尝试让我的程序以2x2 GridLayout的形式打印一个特定的JPanel,并在顶部显示纸牌图标,并在底部显示指示哪个玩家卡牌的文本,但是无论我做什么,结果是相反的,就像这样。我尝试更改添加元素的顺序,但无济于事。

我目前的结果

  CardTable myCardTable 
     = new CardTable("CS 1B CardTable", NUM_CARDS_PER_HAND, NUM_PLAYERS);
  myCardTable.setSize(800, 600);
  myCardTable.setLocationRelativeTo(null);
  myCardTable.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  // show everything to the user
  myCardTable.setVisible(true);
  myCardTable.getGamePanel().setBorder(new TitledBorder("Playing Area"));
  myCardTable.getGamePanel().add(playerCard, JLabel.CENTER);
  myCardTable.getGamePanel().add(computerCard, JLabel.CENTER);
  for(int i = 0; i < NUM_PLAYERS; i++)
  {
      JLabel temp = new JLabel(GUICard.getIcon(generateRandomCard()));
      myCardTable.getGamePanel().add(temp); 
  }

以下是我制作的扩展Table的CardTable类的构造函数。

  static int MAX_CARDS_PER_HAND = 57;
static int MAX_PLAYERS = 2;  // for now, we only allow 2 person games
private int numCardsPerHand;
private int numPlayers;
private JPanel computerPanel, playerPanel, gamePanel;
public CardTable(String title, int numCardsPerHand, int numPlayers) 
{
    super(title);

    setComputerPanel(new JPanel(new GridLayout(1 , numCardsPerHand)));
    setPlayerPanel(new JPanel(new GridLayout(1 , numCardsPerHand)));
    setGamePanel(new JPanel(new GridLayout(2 , numPlayers)));

    setLayout (new BorderLayout(20, 10));
    add(getComputerPanel(), BorderLayout.NORTH );
    add(getGamePanel(), BorderLayout.CENTER);
    add(getPlayerPanel(), BorderLayout.SOUTH);

}
保罗·萨姆索塔

“ GridLayout的顶部有纸牌图标,底部有文本指示哪个球员卡。”

您可以将文本图标放在相同的标签中,而只需使用即可设置文本位置setXxxTextPosition()也许你更喜欢这个IMO看起来比将图标和文本彼此分开要干净得多。

在此处输入图片说明

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;

public class PlayerCard {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ImageIcon playerIcon = new ImageIcon(getClass().getResource("/resources/1.png"));
                ImageIcon compIcon = new ImageIcon(getClass().getResource("/resources/14.png"));
                JLabel playerLabel = new JLabel(playerIcon);
                JLabel compLabel = new JLabel(compIcon);
                playerLabel.setText("Player Card");
                compLabel.setText("Computer Card");
                playerLabel.setVerticalTextPosition(JLabel.BOTTOM);
                compLabel.setVerticalTextPosition(JLabel.BOTTOM);
                playerLabel.setHorizontalTextPosition(JLabel.CENTER);
                compLabel.setHorizontalTextPosition(JLabel.CENTER);

                JPanel playerPanel = new JPanel();
                playerPanel.setBorder(new TitledBorder("Player"));
                playerPanel.add(playerLabel);

                JPanel compPanel = new JPanel();
                compPanel.setBorder(new TitledBorder("Computer"));
                compPanel.add(compLabel);

                JPanel panel = new JPanel();
                panel.add(playerPanel);
                panel.add(compPanel);

                JOptionPane.showMessageDialog(null, panel);
            }
        });
    }
}

更新

如果你真的必须与坚持GridLayout,你需要确保添加卡的第一,然后添加文本标签。

在此处输入图片说明

import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class PlayerCard {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ImageIcon playerIcon = new ImageIcon(getClass().getResource("/resources/1.png"));
                ImageIcon compIcon = new ImageIcon(getClass().getResource("/resources/14.png"));
                JLabel playerLabel = new JLabel(playerIcon);
                JLabel compLabel = new JLabel(compIcon);
                JLabel playerText = new JLabel("Player Card");
                JLabel compText = new JLabel("Computer Card");

                playerLabel.setHorizontalAlignment(JLabel.CENTER);
                compLabel.setHorizontalAlignment(JLabel.CENTER);

                JPanel playerCardPanel = new JPanel();
                playerCardPanel.add(playerLabel);

                JPanel compCardPanel = new JPanel();
                compCardPanel.add(compLabel);

                JPanel panel = new JPanel(new GridLayout(2, 2));
                panel.add(playerCardPanel);
                panel.add(compCardPanel);
                panel.add(playerText);
                panel.add(compText);

                JOptionPane.showMessageDialog(null, panel);
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在2x2网格中显示这些图像?

来自分类Dev

如何在CSS中制作Div的2x2网格?

来自分类Dev

在2x2表jquery中包装div

来自分类Dev

画布中2x2表格的网格?

来自分类Dev

张量流中的谱范数 2x2 矩阵

来自分类Dev

如何强制在 QT WIDGET 的 2x2 VideoWall(4 台显示器)中拉伸内容?

来自分类Dev

如何在kivy中更改gridLayout中特定按钮的颜色

来自分类Dev

如何在QMessageBox中更改按钮顺序

来自分类Dev

如何在R中更改列名的顺序

来自分类Dev

如何确定性地检测其2x2像素四边形中的着色器片段位置?

来自分类Dev

Flexbox中具有固定宽度列的2x2网格

来自分类Dev

xrandr中的“ --scale 2x2”导致监视器不显示任何内容

来自分类Dev

使用Flexbox以2x2网格的形式在ul中显示4张图像

来自分类Dev

Python子图2x2矩阵中的3个图(金字塔)

来自分类Dev

根据数据帧中的实例创建2x2条件表

来自分类Dev

xrandr中的“ --scale 2x2”导致监视器不显示任何内容

来自分类Dev

2x2 diff的解的参数图。python,Mathematica中的系统

来自分类Dev

GNOME 3中可以有2x2的工作区吗?

来自分类Dev

当值为 (2x2) numpy 数组时,在独立字典中添加值

来自分类Dev

如何在ggplot2中更改位置=“ identity”的叠加条的顺序

来自分类Dev

如何在dynamodb java aws sdk 2.x的本地实例中配置端点?

来自分类Dev

Java-使用存储在数组中的文本更改JLabel

来自分类Dev

如何在Android 2.x中强制串行/顺序执行AsyncTasks

来自分类Dev

如何更改seaborn中因子图的顺序

来自分类Dev

如何更改原则标准中的命令顺序

来自分类Dev

如何更改Modelica包中的显示顺序?

来自分类Dev

如何更改球拍中列表内容的顺序?

来自分类Dev

如何更改woocommerce中字段的结帐顺序

来自分类Dev

如何更改MBR中的分区顺序?

Related 相关文章

  1. 1

    如何在2x2网格中显示这些图像?

  2. 2

    如何在CSS中制作Div的2x2网格?

  3. 3

    在2x2表jquery中包装div

  4. 4

    画布中2x2表格的网格?

  5. 5

    张量流中的谱范数 2x2 矩阵

  6. 6

    如何强制在 QT WIDGET 的 2x2 VideoWall(4 台显示器)中拉伸内容?

  7. 7

    如何在kivy中更改gridLayout中特定按钮的颜色

  8. 8

    如何在QMessageBox中更改按钮顺序

  9. 9

    如何在R中更改列名的顺序

  10. 10

    如何确定性地检测其2x2像素四边形中的着色器片段位置?

  11. 11

    Flexbox中具有固定宽度列的2x2网格

  12. 12

    xrandr中的“ --scale 2x2”导致监视器不显示任何内容

  13. 13

    使用Flexbox以2x2网格的形式在ul中显示4张图像

  14. 14

    Python子图2x2矩阵中的3个图(金字塔)

  15. 15

    根据数据帧中的实例创建2x2条件表

  16. 16

    xrandr中的“ --scale 2x2”导致监视器不显示任何内容

  17. 17

    2x2 diff的解的参数图。python,Mathematica中的系统

  18. 18

    GNOME 3中可以有2x2的工作区吗?

  19. 19

    当值为 (2x2) numpy 数组时,在独立字典中添加值

  20. 20

    如何在ggplot2中更改位置=“ identity”的叠加条的顺序

  21. 21

    如何在dynamodb java aws sdk 2.x的本地实例中配置端点?

  22. 22

    Java-使用存储在数组中的文本更改JLabel

  23. 23

    如何在Android 2.x中强制串行/顺序执行AsyncTasks

  24. 24

    如何更改seaborn中因子图的顺序

  25. 25

    如何更改原则标准中的命令顺序

  26. 26

    如何更改Modelica包中的显示顺序?

  27. 27

    如何更改球拍中列表内容的顺序?

  28. 28

    如何更改woocommerce中字段的结帐顺序

  29. 29

    如何更改MBR中的分区顺序?

热门标签

归档