java - 为什么这些图像不显示?

标签 java swing applet jbutton

我正在用 Java 开发老虎机,到目前为止我创建了一个可以随机生成两张图片的按钮。由于某种原因,其中一张图片显示,而另一张图片不显示。我不明白这个问题,因为这两张图片的代码完全相同。这是我的代码。请帮忙!

import java.applet.*;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JApplet;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;
import javax.imageio.*;
import java.net.URL;
import java.io.*;
import java.awt.image.*;





public class slotmachine extends JApplet implements Runnable {
  JButton b1 = new JButton("START");
  JPanel p;
  int int1, int2;
  BufferedImage img= null;
  BufferedImage img2 = null;
  BufferedImage img3 = null;
  BufferedImage img4 = null;
  BufferedImage img5 = null;
  BufferedImage img6 = null;
  BufferedImage img7 = null;
  BufferedImage img8 = null;
  BufferedImage img9 = null;
  BufferedImage img10 = null;
  public slotmachine(){
    init();    
  }


  public void init() {

    this.setLayout(null);
    this.setSize(10000,10000);

    b1.setBounds(100,100,100,100);
    b1.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e){
        Random random1 = new Random();
        int1 = random1.nextInt(10);
        Random random2 = new Random();
        int2 = random2.nextInt(10);
        repaint();

      }


    });


    getContentPane().add(b1);

    try {

      img = ImageIO.read(new File("question.png"));
      img2 = ImageIO.read(new File("banana.png"));
      img3 = ImageIO.read(new File("chocolate.png"));
      img4 = ImageIO.read(new File("icecream.png"));
      img5 = ImageIO.read(new File("bell.png"));
      img6 = ImageIO.read(new File("apple.png"));
      img7 = ImageIO.read(new File("money.png"));
      img8 = ImageIO.read(new File("number-7.png"));
      img9 = ImageIO.read(new File("necklace.png"));
      img10 = ImageIO.read(new File("gloves.png"));
    } catch (IOException e) {
    }  

    repaint();

    this.setVisible(true);  
  }


  public void paint(Graphics g) {
    super.paintComponents(g);
    g.drawString("Int 1 is" + int1,30,30);
        g.drawString("Int 2 is" + int2,30,80);
    switch (int1) {
      case 0:

        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img, 300, 500, this);
        break;
      case 1:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img2,300,500,this);
        break;
      case 2:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img3,300,500,this);
        break;
      case 3:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img4,300,500,this);
        break;
      case 4:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img5,300,500,this);
        break;
      case 5:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img6,300,500,this);
        break;
      case 6:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img7,300,500,this);
        break;
      case 7:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img8,300,500,this);
        break;
      case 8:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img9,300,500,this);
        break;
      case 9:
        g.setColor(Color.white);
        g.fillRect(300,300,300,500);
        g.drawImage(img10,300,500,this);
        break;

    }


    switch (int2) {
      case 0:

        g.setColor(Color.white);
        g.fillRect(300,300,800,500);

        g.drawImage(img, 800, 500, this);
        break;
      case 1:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img2,800,500,this);
        break;
      case 2:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img3,800,500,this);
        break;
      case 3:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img4,800,500,this);
        break;
      case 4:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img5,800,500,this);
        break;
      case 5:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img6,800,500,this);
        break;
      case 6:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img7,800,500,this);
        break;
      case 7:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img8,800,500,this);
        break;
      case 8:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img9,800,500,this);
        break;
      case 9:
        g.setColor(Color.white);
        g.fillRect(300,300,800,500);
        g.drawImage(img10,800,500,this);
        break;

    }

        this.setVisible(true);


  }

}

最佳答案

    img10 = ImageIO.read(new File("gloves.png"));
} catch (IOException e) {
}  

该代码中有两个问题。

  1. 沙盒小程序无法使用文件,并且具有所有权限的小程序只能使用客户端计算机上存在的文件。由于这些图像显然是应用程序资源(即由您提供),因此它们需要位于服务器上(或至少位于小程序的运行时类路径上)并通过 URL 加载。
  2. 问题是忽略异常!将其更改为:

    } catch (IOException e) {
        e.printStackTrace();
    }  
    

    当然,请确保 Java Console已配置为显示。如果默认级别没有输出,请提高级别并重试。

关于java - 为什么这些图像不显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251156/

相关文章:

java - JSF 中的树组件

java - 使用 1px Swing 矩形绘制山脉

Java:JScrollPane满了就消失

ajax - 如何从 Web 浏览器(客户端)建立 TCP Socket 连接?

java - Applet 拒绝运行,即使有沙箱权限并且网站已添加到异常(exception)列表

java - Lucene 搜索 Luke 与 Hibernate 搜索不同的结果

java - 如何为 Junit 单元测试设置 JVM 参数?

java - 将 JTree (CheckboxTree) 添加到 JDialog

java - 从其他线程更新 Swing GUI

尽管运行代码来显示菜单,Java 小程序仍显示白屏