Две панели JPanel вместо одной - PullRequest
0 голосов
/ 03 августа 2020

Я попытался создать 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

Почему ладьи две? Какие еще проблемы с этим кодом?

...