1

我使用了该站点周围的一些信息来了解如何使用 URL 将图像放入 jar 文件中;我希望能够单独使用。但是当我用 BlueJ 制作 jar 文件时,只显示了一些图像。

这是一个二十一点游戏,只有桌面画布出现,而没有卡片出现。这是代码:

这工作(表):

public class TableComponent extends JLabel{

  BufferedImage table;


  public TableComponent(){
    URL finalTable = getClass().getResource("blackjackTableCanvas.jpg");
        try {
        table = ImageIO.read(finalTable);
    } catch (IOException e) {
        e.printStackTrace();
    }

  }

  @Override
protected void paintComponent(Graphics g) {
  Graphics2D g2 = (Graphics2D) g;
    super.paintComponent(g2);
    g2.drawImage(table, 0, 0, null);
}...}

但这不是(卡片):

public class CardRender2 extends JComponent{

  BufferedImage image;
  String val;
  String suit;
  String filename;

  public CardRender2(Card card) {
    this.val = card.value.face;
    this.suit = card.suit.toString();
    filename = this.fetchCardFileLabel();

    URL cardview = getClass().getResource("\\card deck\\" + filename + ".png");
    try {

      image = ImageIO.read(cardview);
    } catch (IOException e) {
      e.printStackTrace();
    }

  }
  public CardRender2(){
    this.val = null;
    this.suit = null;
    filename = "DEALER_FIRST_CARD";

    URL cardview = getClass().getResource("\\card deck\\DEALER_FIRST_CARD.png");
    try {

      image = ImageIO.read(cardview);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    super.paintComponent(g2);
    g2.drawImage(image, 0, 0, null);

  }...}

我的卡片位于我尝试导入 BlueJ 的目录中的文件夹中,而表位于目录根目录中。那里有 53 张牌(包括庄家隐藏牌),我不想把所有牌都放在根目录下。我试图以类似的方式实现它们。我怎样才能做到这一点?

4

1 回答 1

0

看起来像是从

URL cardview = getClass().getResource("\\card deck\\DEALER_FIRST_CARD.png");

 URL cardview = getClass().getResource("card deck/DEALER_FIRST_CARD.png");

成功了。

于 2017-07-07T03:20:19.570 回答