У меня возникла проблема, когда моя сетка печатается очень хорошо, и когда я выделяю поле, оно превращается в нужный мне цвет, однако при нажатии на одно из полей оно не становится красным, и я не могу показаться чтобы выяснить, почему кто-то может помочь:)
Обязательно посмотрите на функции InBoxX (), InBoxY (), а также MouseClicked и l oop в классе Board, который выводит все.
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class GUI extends JFrame {
public int mx = -100;
public int my = -100;
int spacing = 2;
public boolean[][] Nodes = new boolean[32][18];
public GUI(){
this.setTitle("Test");
this.setSize(1286 , 829);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
Board board = new Board();
this.setContentPane(board);
Move move = new Move();
this.addMouseMotionListener(move);
Click click = new Click();
this.addMouseListener(click);
}
public class Board extends JPanel {
public void paintComponent(Graphics g){
g.setColor(Color.DARK_GRAY);
g.fillRect(0 , 0 , 1280 , 800);
for ( int i = 0 ; i < 32 ; i++){
for (int j = 0 ; j < 18 ; j++){
Nodes[i][j] = false;
if(Nodes[i][j] == true){
g.setColor(Color.red);
}
g.setColor(Color.gray);
if( mx >= spacing+i*40 && mx < spacing+i*40+40-spacing &&
my >= spacing+j*40+40+26 &&
my < spacing+j*40+26+40+40-2*spacing ){
g.setColor(Color.yellow);
}
g.fillRect(spacing+i*40, spacing+j*40+40, 40-2*spacing, 40-2*spacing);
}
}
}
}
public class Move implements MouseMotionListener {
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
mx = e.getX();
my = e.getY();
}
}
public class Click implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
if(InBoxX() != -1 && InBoxY() != -1){
Nodes[InBoxX()][InBoxY()] = true;
System.out.println("Clicked");
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public int InBoxX(){
for ( int i = 0 ; i < 32 ; i++){
for( int j = 0 ; j < 18 ; j++){
if(mx >= spacing+i*40 && mx < spacing+i*40+40-spacing &&
my >= spacing+j*40+40+26 &&
my < spacing+j*40+26+40+40-2*spacing){
return i;
}
}
}
return -1;
}
public int InBoxY(){
for ( int i = 0 ; i < 32 ; i++){
for (int j = 0 ; j< 18 ; j++){
if(mx >= spacing+i*40 && mx < spacing+i*40+40-spacing &&
my >= spacing+j*40+40+26 &&
my < spacing+j*40+26+40+40-2*spacing){
return j;
}
}
}
return -1;
}
}
}