Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小程序在浏览器中显示为空_Java_Image_Swing_Graphics_Applet - Fatal编程技术网

Java 小程序在浏览器中显示为空

Java 小程序在浏览器中显示为空,java,image,swing,graphics,applet,Java,Image,Swing,Graphics,Applet,这个小程序将显示两幅相互重叠的图片。当我在浏览器中运行此小程序时,它不会显示图片。图片名称正确,与小程序位于同一文件夹中 import java.awt.Graphics; import javax.swing.ImageIcon; import javax.swing.JApplet; public class question3b extends JApplet{ public void init() { repaint(); }

这个小程序将显示两幅相互重叠的图片。当我在浏览器中运行此小程序时,它不会显示图片。图片名称正确,与小程序位于同一文件夹中

import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JApplet;


public class question3b extends JApplet{


    public void init() {
        repaint();
        }

     public void paint(Graphics g)
    {
        super.paint(g);
        ImageIcon image1 = new ImageIcon("1.JPG");
        ImageIcon image2 = new ImageIcon("2.JPG");
        g.drawImage(image1.getImage(), 100, 20 , 100, 100, this);
        g.drawImage(image2.getImage(), 100, 150 , 100, 100, this);

  }
}
这是HTML页面

<html>
<head>
<title>Welcome Java Applet</title>
</head>
<body>
<applet
  code = "question3b.class"
  width = 1000
  height = 500>
</applet>
</body>
</html>

欢迎使用Java小程序
建议:
  • 不要覆盖JApplet的绘制方法
  • 而是重写JPanel的paintComponent方法并在小程序中显示面板
  • 不要在paintComponent方法中调用repaint()。求你了
  • 不要在paint或paintComponent方法中读入图像。只需阅读一次图像
  • 不要将图像作为文件读取,而是作为资源读取
  • 测试以确保您正在查看图像的正确位置
  • 通过阅读一些关于Swing图形的教程,您会受益匪浅,因为您所做的很多事情看起来像是在做一些猜测。这些教程将向您展示正确的做事方法。你不会后悔读了它们
  • 甚至比在JPanel中绘制图像更好的是将它们放入ImageIcons中,并在JLabel中显示它们
建议:
  • 不要覆盖JApplet的绘制方法
  • 而是重写JPanel的paintComponent方法并在小程序中显示面板
  • 不要在paintComponent方法中调用repaint()。求你了
  • 不要在paint或paintComponent方法中读入图像。只需阅读一次图像
  • 不要将图像作为文件读取,而是作为资源读取
  • 测试以确保您正在查看图像的正确位置
  • 通过阅读一些关于Swing图形的教程,您会受益匪浅,因为您所做的很多事情看起来像是在做一些猜测。这些教程将向您展示正确的做事方法。你不会后悔读了它们
  • 甚至比在JPanel中绘制图像更好的是将它们放入ImageIcons中,并在JLabel中显示它们

    • 您遇到的问题与如何加载图像有关

      ImageIcon image2 = new ImageIcon("2.JPG");
      
      假定映像源是客户端硬盘上的本地文件,这可能是非法操作

      答案将取决于文件存储的位置。如果映像是应用程序jar中的嵌入式资源,则应该使用

      ImageIcon image2 = new ImageIcon(getClass().getResource("/2.JPG"));
      
      try {
          URL url = new URL(getCodeBase(), "2.jpg");
          img = ImageIO.read(url);
      } catch (IOException e) { 
          e.printStackTrace();
      }
      
      如果图像存储在web服务器中,则应使用

      ImageIcon image2 = new ImageIcon(getClass().getResource("/2.JPG"));
      
      try {
          URL url = new URL(getCodeBase(), "2.jpg");
          img = ImageIO.read(url);
      } catch (IOException e) { 
          e.printStackTrace();
      }
      

      插入气垫船刚才所说的一切(+1)

      问题在于如何加载图像

      ImageIcon image2 = new ImageIcon("2.JPG");
      
      假定映像源是客户端硬盘上的本地文件,这可能是非法操作

      答案将取决于文件存储的位置。如果映像是应用程序jar中的嵌入式资源,则应该使用

      ImageIcon image2 = new ImageIcon(getClass().getResource("/2.JPG"));
      
      try {
          URL url = new URL(getCodeBase(), "2.jpg");
          img = ImageIO.read(url);
      } catch (IOException e) { 
          e.printStackTrace();
      }
      
      如果图像存储在web服务器中,则应使用

      ImageIcon image2 = new ImageIcon(getClass().getResource("/2.JPG"));
      
      try {
          URL url = new URL(getCodeBase(), "2.jpg");
          img = ImageIO.read(url);
      } catch (IOException e) { 
          e.printStackTrace();
      }
      

      插入气垫船刚刚说的(+1)

      以及如何覆盖JPanel的paintComponent方法,我将尝试搜索tutorials@BasilBasaif:每次调用
      paint(…)
      时,您都在读取图像。这不仅是不必要的,而且会使GUI的图形变得缓慢。paint和paintComponent需要精简、平均、快速,并且只涉及绘画。@BasilBasa如果有一个通读的Add use ImageIO而不是ImageIcon(请;),我如何重写JPanel的paintComponent方法,我将尝试搜索tutorials@BasilBasaif:每次调用
      paint(…)
      时,您都在读取图像。这不仅是不必要的,而且会使GUI的图形变得缓慢。paint和paintComponent需要精干、简洁、快速,并且只涉及绘画。@BasilBasaif有一个通读的Add use ImageIO而不是ImageIcon(请;))它工作得很好,因为我正在使用wamp测试我的页面,但我没有使用你给我的try-and-catch代码,顺便说一句,当我用netbeans测试它时,上面的代码显示得很好。小程序查看器没有与浏览器相同的限制,因此它可以查看文件系统。ImageIO更健壮(并且支持更多的图像格式),因为它引发了一个异常,这意味着它更容易诊断它工作得很好,因为我使用wamp测试我的页面,但我没有使用你给我的try-and-catch代码,顺便说一句,当我用netbeans测试它时,上面的代码显示得很好。小程序查看器没有与浏览器相同的限制,因此它可以查看文件系统。ImageIO更健壮(并且支持更多图像格式),因为它会引发异常,这意味着更容易诊断