Я знаю, что один и тот же вопрос задавался много раз, но я действительно не вижу ошибки в моем коде, что препятствует тому, чтобы объект типа JPanel отображался в JFrame. Вот конструктор класса, который простирается JFrame:JPanel не отображается в JFrame
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Game extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private Board board;
public Game() {
super("Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.WHITE);
board = new Board();
add(board, BorderLayout.CENTER);
JButton button = new JButton("Start new game");
button.setFocusPainted(false);
button.addActionListener(this);
JPanel control = new JPanel();
control.setBackground(Color.WHITE);
control.add(button);
add(control, BorderLayout.SOUTH);
pack();
setResizable(false);
setVisible(true);
}
И это один конструктор класса, который расширяет JPanel:
public class Board extends JPanel implements ActionListener {
public Board() {
setBackground(Color.WHITE);
setLayout(new GridLayout(NUMBER_OF_ROWS, NUMBER_OF_COLUMNS));
setBorder(BorderFactory.createEmptyBorder(20, 20, 0, 20));
board = new Cell[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
for (int row = 0; row < NUMBER_OF_ROWS; row++) {
for (int column = 0; column < NUMBER_OF_COLUMNS; column++) {
board[row][column] = new Cell(this, row, column);
add(board[row][column]);
}
}
}
Когда я запускаю основной метод (который я не сделал показать здесь), он показывает только рамку и кнопку. Если бы кто-то мог намекнуть на это, я был бы очень благодарен.
Добавить основной метод. –
public static void main (String [] args) { новый Game(); } – user3317143
отнять макеты границы для доски и кнопки - они могут быть друг на друга – BruceWayne