Я делаю Connect Four Game. Я создал массив размером 6 на 7 из JPanel
объектов, которые будут содержать изображения пустых или полных (красных или синих) пространств, изображения действуют как сетка, чтобы сделать доску и переключаться с пустого на определенный цвет на игрока выбирая этот столбец (я еще не слишком хорош в Java, я решил не создавать движущиеся объекты). У меня проблема с заполнением сетки пустым пространством.Как добавить массив JPanel в JPanel с помощью GridLayout?
Я смущен тем, как это сделать, у меня есть панель; gridPanel
, с 6 на 7 GridLayout
, и у меня есть массив панелей, содержащих Images
. Я хочу добавить массив 6 на 7, на панель с 6 на 7 gridLayout
, это можно сделать?
У меня также возникли проблемы с созданием массива панели, я делаю это правильно (в методе: createGrid
)?
Задача: Нет Изображения появляются на панели с помощью GridLayout
.
Мой код выглядит следующим образом:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ConnectFour{
static JButton colOne = new JButton("Drop");
static JButton colTwo = new JButton("Drop");
static JButton colThree = new JButton("Drop");
static JButton colFour = new JButton("Drop");
static JButton colFive = new JButton("Drop");
static JButton colSix = new JButton("Drop");
static JButton colSeven = new JButton("Drop");
static JPanel[][] gridComponent = new JPanel[6][7];
static JPanel gridPanel = new JPanel();
static JPanel emptySlot = new JPanel();
static JPanel redSlot = new JPanel();
static JPanel blueSlot = new JPanel();
public static void main(String[] args){
JPanel mainPanel = new JPanel();
JPanel buttonPanel = new JPanel();
//Creation of the 3 possible slot images
ImageIcon emptyCircle = new ImageIcon("emptyCircle.png");
ImageIcon redCircle = new ImageIcon("redCircle.png");
ImageIcon blueCircle = new ImageIcon("blueCircle.png");
JLabel emptyLabel = new JLabel(emptyCircle);
JLabel redLabel = new JLabel(redCircle);
JLabel blueLabel = new JLabel(blueCircle);
emptySlot.add(emptyLabel);
redSlot.add(redLabel);
blueSlot.add(blueLabel);
mainPanel.setLayout(new BorderLayout());
gridPanel.setLayout(new GridLayout(6, 7));
buttonPanel.setLayout(new GridLayout(1, 7));
mainPanel.add(gridPanel, BorderLayout.CENTER);
mainPanel.add(buttonPanel, BorderLayout.NORTH);
buttonPanel.add(colOne);
buttonPanel.add(colTwo);
buttonPanel.add(colThree);
buttonPanel.add(colFour);
buttonPanel.add(colFive);
buttonPanel.add(colSix);
buttonPanel.add(colSeven);
//Properties of the JFrame
JFrame window = new JFrame("Connect Four"); //Title
window.setContentPane(mainPanel); //content pane set to mainPanel
window.setSize(500,500); //JFrame size
window.setLocation(0,0); //Location of appearance
window.setVisible(true); //Set to be visable
window.setResizable(true); //Set to be resizeable
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Program ends upon exiting window
createGrid();
clearBoard();
}
public static void createGrid(){
for(int a=0; a<6; a++){
for(int b=0; b<7; b++){
gridComponent[a][b] = new JPanel();
gridPanel.add(gridComponent[a][b]);
}
}
}
public static void clearBoard(){
for(int a=0; a<6; a++){
for(int b=0; b<7; b++){
gridComponent[a][b] = emptySlot;
}
}
}
}
Не уверен, что только дубликат, но [эта тема] (http://stackoverflow.com/questions/21070555/java-making-connect-four-game-panel) был опубликован просто Несколько минут назад. – PakkuDon
Кажется, это другой парень с тем же домашним заданием;) По крайней мере, этот код решает проблему другой темы. –
@OP: В чем проблема, которую вы сейчас публикуете? Вы не можете ожидать, что мы сканируем ваш код на возможные проблемы. Вы ошибаетесь? Или ошибка? –