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);
}
}
クラス No2:
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 ペインを作成する場合は、paintComponent() で画像を描画するクラスをさらに 2 つ作成し (上記と同様のコードを使用)、別のレイヤーのレイヤード ペインに各クラスのインスタンスを追加します。最初のクラスの、なぜ何も表示されないのですか?
(私のメイン メソッドは LP3 にあるはずですが、学習に使用されるメイン メソッドがなくても、インスタンスで直接メソッドを呼び出すことができる IDE を使用しているだけです)