JPanel を拡張する 2 つの異なるクラスからの 2 つの画像を並べて表示したいと考えています。
私が抱えている問題は、2 つの JPanels が JFrame 内にある必要がありますが、framename.add(panel) を実行すると、2 つを並べて追加するのではなく、もう一方を置き換えることです。
メインクラス内にフローレイアウトやその他のレイアウトを追加しようとしましたが、画像が表示されませんでした。
私の質問は、Jpanel を拡張する 2 つのクラスがある場合、これらの 2 つのパネルを Jframe 内に追加して、他のパネルを置き換えずに (互いに隣り合って) 並べるにはどうすればよいですか?
どんな提案でも大歓迎です。
編集:JFrameをクラスに拡張すると、そのクラスは自動的にJPanel自体になりますか? extends の意味は知っていますが、Jframe に関してどのように機能するかはわかりません。
Main.java
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class Main
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
Panel1 s = new Panel1(); //picture 1
Panel2 n = new Panel2(); //picture 2
frame.add(n);
frame.add(s); //here is the problem, it replaces the previous panel
f.setSize(200,100);
f.setLocation(0,400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Panel1.java
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class image2 extends JPanel
{
ImageIcon anotherIcon;
public image2() //constructor
{
URL imageURL = Panel1.class.getResource("images/puppy.png");
anotherIcon = new ImageIcon(imageURL);
}
public void paint(Graphics g)
{
super.paintComponent(g);
anotherIcon.paintIcon(this, g, 0, 0);
}
}
Panel2.java
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class Panel2 extends JPanel
{
ImageIcon anotherIcon2;
public Panel2() //constructor
{
URL imageURL = Panel2.class.getResource("images/puppy2.png");
anotherIcon = new ImageIcon(imageURL);
}
public void paint(Graphics g)
{
super.paintComponent(g);
anotherIcon2.paintIcon(this, g, 0, 0);
}
}