Метод слушателя действий не работает. Программа Game of LifeJAVA

Программисты JAVA общаются здесь
Anonymous
Метод слушателя действий не работает. Программа Game of Life

Сообщение Anonymous »

Я пишу программу для моделирования игры жизни: работа над методом, который возвращает количество соседей, которые живы (используя Jbuttons) Вот мой полный код: < /p>

Код: Выделить всё

    import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.Timer;
import java.awt.Color;

public class AliveNeighbors extends MyFrame {

int[][] AliveNeighbors = new int[50][50];

public AliveNeighbors() {

Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updateAliveNeighbors(); // Update the AliveNeighbors
}
});
timer.start();
}

public void updateAliveNeighbors() {
for (int row = 0; row < 50; row++) {
for (int col = 0; col < 50; col++) {
AliveNeighbors[row][col] = 0;
if (row == 0){
button[row][col].setBackground(Color.DARK_GRAY);
AliveNeighbors[row][col] = 0;
}
if (row == 49){
button[row][col].setBackground(Color.DARK_GRAY);
AliveNeighbors[row][col] = 0;
}
if (col == 0){
button[row][col].setBackground(Color.DARK_GRAY);
AliveNeighbors[row][col] = 0;
}
if (col == 49){
button[row][col].setBackground(Color.DARK_GRAY);
AliveNeighbors[row][col] = 0;
}
else{
if (button[row - 1][col - 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row -1][col].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row - 1][col + 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row][col - 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row][col + 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row + 1][col - 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row + 1][col].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
if (button[row + 1][col + 1].getBackground() == Color.CYAN) {
AliveNeighbors[row][col]++;
}
}

}
}
}
}
< /code>
По какой -то причине мой метод updatealiveneighbors () не работает.  Вот мой основной метод: < /p>
Public class main(){
public static void main(String[] args) {
MyFrame frame = new MyFrame();
AliveStatus Status = new AliveStatus();
AliveNeighbors NeighborStatus = new AliveNeighbors();
}
}
< /code>
Мой код работает на моем myframe (с помощью java swing): < /p>
import javax.swing.JFrame;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;

class MyFrame extends JFrame implements MouseListener {

JButton button[][];

private boolean mousePressed = false;

public MyFrame() {
// Setting up the frame (no need to create a new JFrame object)
this.setTitle("Game_Board"); // Sets title of the frame
this.setSize(500, 500); // Sets size of the frame
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Exits the application when closed
this.setResizable(false); //restricts JFrame size

// Setting up GridLayout for the frame
this.setLayout(new GridLayout(50, 50));
this.getContentPane().setBackground(new Color(0x123456)); // Sets background color

// Creating and adding 2500 buttons to the grid
button = new JButton[50][50];
for (int row = 0; row < 50; row++) {
for (int col = 0; col < 50; col++){
button[row][col] = new JButton(); // Creates a new button
button[row][col].addMouseListener(this); // Adds mouse listener to each button
button[row][col].setBackground(Color.DARK_GRAY); // Sets background color of the button
this.add(button[row][col]); // Adds the button to the frame
}
}

// Makes the frame visible
this.setVisible(true);
}
@Override
public void mousePressed(MouseEvent e) {
mousePressed = true;
}

@Override
public void mouseReleased(MouseEvent e){
mousePressed = false;
}

@Override
public void mouseEntered(MouseEvent e){
if(mousePressed == true){
for (int row = 0; row < 50; row++) {
for (int col = 0; col < 50; col++) {
if (e.getSource() == button[row][col]) {
if (button[row][col].getBackground() == Color.DARK_GRAY) {
button[row][col].setBackground(Color.CYAN);
break;
}
if (button[row][col].getBackground() == Color.CYAN){
button[row][col].setBackground(Color.DARK_GRAY);
}
}
}
}
}
}

@Override
public void mouseExited(MouseEvent e){
}

@Override
public void mouseClicked(MouseEvent e){
for (int row = 0; row < 50; row++) {
for (int col = 0; col < 50; col++) {
if (e.getSource() == button[row][col]) {
if (button[row][col].getBackground() == Color.DARK_GRAY) {
button[row][col].setBackground(Color.CYAN);
break;
}
if (button[row][col].getBackground() == Color.CYAN){
button[row][col].setBackground(Color.DARK_GRAY);
}
}
}
}
}
}
Я не получаю никаких сообщений об ошибках…

Подробнее здесь: https://stackoverflow.com/questions/795 ... fe-program

Вернуться в «JAVA»