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更健壮(并且支持更多图像格式),因为它会引发异常,这意味着更容易诊断