Java 康威';生活的游戏
我一直在编写Conway的GOL for类的副本,当GUI呈现时,我遇到了一个问题 快速概述: GUI创建一个框架和一个主面板,设置为BorderLayout 一旦我实例化网格本身并将其分配给主面板,它应该在网格中显示我的2D数组,但它没有。在过去的两个小时里,我的头一直撞在墙上 FWIW,我不能在这个基础上使用IDE来构建GUI。代码如下: GUIJava 康威';生活的游戏,java,swing,jpanel,conways-game-of-life,Java,Swing,Jpanel,Conways Game Of Life,我一直在编写Conway的GOL for类的副本,当GUI呈现时,我遇到了一个问题 快速概述: GUI创建一个框架和一个主面板,设置为BorderLayout 一旦我实例化网格本身并将其分配给主面板,它应该在网格中显示我的2D数组,但它没有。在过去的两个小时里,我的头一直撞在墙上 FWIW,我不能在这个基础上使用IDE来构建GUI。代码如下: GUI import java.awt.*; import java.awt.event.*; import java.awt.Co
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.*;
import java.util.Observer;
import java.util.Observable;
public class GameOfLifeGUI extends JFrame implements Observer {
private JPanel mainPanel;
private JPanel gridPanel;
private JPanel startPanel;
private JPanel titlePanel;
private JButton start;
private Cell cell;
private Grid grid;
private MouseEvent mouseClicked;
private MouseEvent mouseDragged;
private MouseEvent mousePressed;
private MouseEvent mouseRelease;
private MouseListener mouseListener;
public GameOfLifeGUI() {
super("");
//Create Start Button for startPanel
JButton start = new JButton("Start");
//Creates a Grid to add to the panel
grid = new Grid(75,75);
//Create JPanels
mainPanel = new JPanel();
gridPanel = new JPanel();
startPanel = new JPanel();
titlePanel = new JPanel();
/**
* Add Grid to gridPanel
* Modify Grid(int, int) to change size of Grid. Per spec, this grid should always be 75x75
*/
//Create gridPanel
gridPanel.setLayout(new GridLayout(75,75));
gridPanel.setBackground(Color.WHITE);
gridPanel.add(grid);
//Set Layout of Panels
mainPanel.setLayout(new BorderLayout());
mainPanel.add(gridPanel, BorderLayout.CENTER);
mainPanel.add(startPanel, BorderLayout.SOUTH);
mainPanel.add(titlePanel, BorderLayout.NORTH);
//Add Start Button to startPanel
startPanel.add(start);
//Creates a window for displaying the GUI
this.setTitle("Conway's Game of Life");
this.setSize(1000, 750);
this.setLocationRelativeTo(null);
this.add(mainPanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}//end Constructor
网格
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Component;
import java.awt.Color;
import javax.swing.JPanel.*;
import java.util.Observer;
import java.util.Arrays;
import java.util.Observable;
public class Grid extends JPanel{
private Cell[][] grid;
private int column;
private int row;
/**
* Constructs a Grid of Cells
* columns is a column of cells
* rows is a row of cells
*/
public Grid(int column, int row){
this.column = column;
this.row = row;
// create a grid of cells
grid = new Cell[row][column];
for (int r = 0; r < row; r++){
for (int c = 0; c < column; c++){
grid[r][c] = new Cell(r,c);
}
}
//Creates a border of cells around grid for edge case handling
//All cells in this border will be dead and incapable of living
for (int c = 0; c < column; c++){
grid[0][c] = new Cell(row, column);
}
for (int c = 0; c < column-1; c++){
grid[row-1][c] = new Cell(row, column);
}
for (int r = 0; r < row; r++){
grid[r][0] = new Cell(row, column);
}
for (int r = 0; r < row-1; r++){
grid[r][column - 1] = new Cell(row, column);
}
}//end Constructor
import java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
导入java.awt.Component;
导入java.awt.Color;
导入javax.swing.JPanel.*;
导入java.util.Observer;
导入java.util.array;
导入java.util.Observable;
公共类网格扩展JPanel{
专用小区[][]网格;
私有int列;
私人int row;
/**
*构建一个单元格网格
*列是一列单元格
*行是一行单元格
*/
公共网格(整数列,整数行){
this.column=列;
this.row=行;
//创建单元格网格
网格=新单元格[行][列];
对于(int r=0;r|
如果您需要更多信息,请告诉我-不想在我的第一篇文章中编写转储代码。网格类没有方法来绘制组件java graphics类中的方法解决了这个问题。绘制网格的代码在哪里?这只是布局。在子组件上调用
setVisible
,甚至在将其附加到父组件之前这样做都是没有意义的。网格存在于它自己的类中-您想查看网格类还是GUI构建的其余部分?网格作为model类并不重要,但是可视化它的代码。粘贴可视化代码的一个相关部分。布局看起来应该可以工作。问题是什么?@shedri1:只是一个小建议,扩展~JFrame~的类不应该包含任何其他内容,在其他类中准备面板,最后,调用该类来进行cont对于这个JFrame,您可以通过这种方式轻松地使其适用于JApplet,以防万一将来您想将其实现为:-)