el programa està compuesto actualmente por los mètodos "crearTablero", "clicLinea", "paint" el problema està en que yo trabajo las lìneas como un todo al intentar tomar las coordenadas de donde se hace clic, solo puedo calcular las lìneas verticales u horizontales, pero no ambas a la vez.
me dijeron que tomara cada lìnea como objeto y que el objeto se activara al darle click sobre èl, pero no sè como hacerlo.
alguien me podrìa orientar con ello?
acà el còdigo hasta ahora:
Código java:
Ver original
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package paqGrilla; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; public int celdas = 10; private int TAM = celdas + 1; // tamaño de la tabla private int LARGO = 40; // Largo de la línea private int lineaVisible[][][][] = new int[TAM][TAM][TAM][TAM]; // 0 oculto; 1 visible private int celda[][] = new int[TAM][TAM]; private int estado = 0; // 0 inicio; 1 final private int lineasVistas = 0; public Grilla() { setTitle("Mi Grilla"); setSize(440,460); setVisible(true); setResizable(true); crearTablero(); if (estado==0) { int x = me.getXOnScreen(); int y = me.getYOnScreen(); int x1 = x/40; int y1 = (y-40)/40; int x2 = x/40; int y2 = y/40; clicLinea(x1,y1,x2,y2); } } }); } }); } public void clicLinea (int x1, int y1, int x2, int y2) { if (lineaVisible[x1][y1][x2][y2]==0) { lineaVisible[x1][y1][x2][y2]=1; lineasVistas++; repaint(); } } public void crearTablero(){ for (int p1=0; p1<TAM; p1++) { for (int p2=0; p2<TAM; p2++) { int x1 = p1; int y1 = p2; int x2 = p1; int y2 = p2+1; if (y2<TAM) { for (int p3=0; p3<2; p3++) { if (p3==0) { // Vertical lineaVisible[x1][y1][x2][y2] = 0; } else { // Horizontal lineaVisible[y1][x1][y2][x2] = 0; } } celda[x1][y1]=0; } } } estado = 0; lineasVistas = 0; } paint(g); } g.clearRect(0, 0, getWidth(), getHeight()); for (int p1=0; p1<TAM; p1++) { for (int p2=0; p2<TAM; p2++) { int x1 = p1*40; int y1 = p2*40; int x2 = p1*40; int y2 = (p2+1)*40; if (y2<TAM*40) { for (int p3=0; p3<2; p3++) { if (p3==0) { // Vertical if (lineaVisible[x1/40][y1/40][x2/40][y2/40]==1) { } else { } g.drawLine(x1+20, y1+40, x2+20, y2+40); } else { // Horizontal if (lineaVisible[y1/40][x1/40][y2/40][x2/40]==1) { } else { } g.drawLine(y1+20, x1+40, y2+20, x2+40); } } } } } } /** * @param args the command line arguments */ new Grilla(); } }