Я попытался создать JFrame и поместить на него 5 панелей JPanel. Проблема в том, что верхняя панель появляется дважды. Это класс Frame:
package Chess;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import Chess.NorthPanel;
public class Frame {
public static void main(String[] args) {
drawpanels();
}
public static void drawpanels() {
JFrame board=new JFrame("Board");
board.setLayout(new BorderLayout());
board.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
board.setVisible(true);
board.setSize(1000, 1000);
board.getContentPane().setBackground(new Color(224,224,224));
NorthPanel p1=new NorthPanel();
SouthPanel p2=new SouthPanel();
CenterPanel p3=new CenterPanel();
JPanel p4=new JPanel();
JPanel p5=new JPanel();
p4.setBackground(Color.green);
p5.setBackground(Color.red);
board.add(p1, BorderLayout.NORTH);
board.add(p2, BorderLayout.SOUTH);
board.add(p3, BorderLayout.CENTER);
board.add(p4, BorderLayout.EAST);
board.add(p5, BorderLayout.WEST);
board.validate();
}
}
И это класс NorthPanel:
package Chess;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class NorthPanel extends JPanel{
private static final long serialVersionUID = 1L;
public NorthPanel() {
this.setBackground(new Color(128,128,128));
JLabel label=new JLabel();
label.setIcon(new ImageIcon("images/rlt.png"));
this.add(label);
}
}
(Есть два других класса для SouthPanel и CenterPanel.)
И результат:
https://i.stack.imgur.com/KXBon.png
Почему ладьи две? Какие еще проблемы с этим кодом?