我正在尝试使用 SWING 设计一个 GUI。我的问题是我不确定 paintComponent 方法是如何工作的。我正在尝试显示 2 张图像,但仅显示 PanClass 中的一张。这是相关代码(2 个类)。
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.awt.Image;
public class LP3 extends JPanel
{
public static BufferedImage image;
public static BufferedImage image2;
private JFrame frame=new JFrame();
private PanClass Panel=new PanClass();
public LP3()
{
try
{
image2=ImageIO.read(new File("New Game.png"));
}
catch (IOException e)
{
//Nothing
}
frame.setSize(1000,100);
frame.setResizable(true);
frame.add(Panel);
Panel.setOpaque(true);
frame.pack();
frame.setVisible(true);
}
public void paintComponent(Graphics g)
{
g.drawImage(image2,0,0,null);
}
}
2号班:
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.awt.Image;
public class PanClass extends JPanel
{
private static BufferedImage theimage;
private static BufferedImage image2;
private JPanel a=new JPanel();
public PanClass()
{
a.setLayout(null);
a.setOpaque(true);
try
{
theimage = ImageIO.read(new File(design4.jpg"));
}
catch (IOException e)
{
//Not handled.
}
}
public void paintComponent(Graphics g)
{
g.drawImage(theimage,0,0,null);
}
}
现在的代码只显示来自 PanClass 的图像。如果我要在 PanClass 中添加要完成的两个图像的绘制,那么两者都将被正确绘制。我很想知道为什么会发生这种情况,因为我更感兴趣的是了解它是如何工作的,而不是完成工作。此外,如果我在一个类中创建一个 JFrame 和一个 JLayered Pane,然后再创建 2 个使用 paintComponent() 绘制图像的类(使用与上述类似的代码),然后在不同层上的 Layered Pane 上添加每个类的实例头等舱,为什么什么都没有显示?
(我的主要方法应该在 LP3 上,但我只是使用一个 IDE,它允许您直接在实例上调用方法,而无需用于学习的主要方法)