Я хочу иметь JFrame и добавить на него JPanel "mainPanel", который имеет тот же размер, что и JFrame, а затем я хочу добавить еще одну JPanel "gamePanel" на mainPanel, которая представляет собой GridLayout размером 500x500 пикселей. Но если я переключу цвет игровой панели на синий, все станет синим.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javafx.scene.layout.Border;
public class GameViewImpl extends JFrame implements GameView {
JPanel mainPanel;
JFrame mainFrame;
JPanel gamePanel;
@Override
public void setController(GameController controller) {
// TODO Auto-generated method stub
}
@Override
public void show(int c, int r, boolean isHouse, int houseSize, int houseIndex) {
// TODO Auto-generated method stub
}
public void createAndShowThread() {
mainFrame = new JFrame();
mainFrame.setSize(1000,500);
mainPanel = new JPanel(new BorderLayout());
mainFrame.setVisible(true);
mainPanel.setSize(1000,500);
mainFrame.add(mainPanel);
mainFrame.setResizable(false);
gamePanel = new JPanel(new GridLayout(10,10));
gamePanel.setSize(500,500);
gamePanel.setBackground(Color.blue);
mainPanel.add(gamePanel);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
}
обновленный код:
import javax.swing.SwingUtilities;
public class Main {
static public void main(String Args[]) {
GameModelImpl gameModel = new GameModelImpl(10,10);
GameViewImpl gameView = new GameViewImpl();
GameControllerImpl gameController = new GameControllerImpl();
gameModel.setView(gameView);
gameView.setController(gameController);
gameController.setModel(gameModel);
gameView.createAndShowThread();
SwingUtilities.invokeLater(()->gameView.createAndShowThread());
}
}