Código de Java - Linea

Imágen de perfil
Val: 62
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

Lineagráfica de visualizaciones


Java

Actualizado el 23 de Marzo del 2017 por Alejandro (3 códigos) (Publicado el 18 de Noviembre del 2016)
2.964 visualizaciones desde el 18 de Noviembre del 2016
Aplicación muy simple y sencilla en la que pinchando dos botones, se generará una linea entre ambos. La interfaz gráfica consiste en una malla de X por Y botones, donde se pinchará el punto inicial y final de la linea. Pinchando una tercera vez se borrara la linea y se podrá generar otra nueva.
Captura1
Captura2

1.0
estrellaestrellaestrellaestrellaestrella(1)

Actualizado el 21 de Noviembre del 2016 (Publicado el 18 de Noviembre del 2016)gráfica de visualizaciones de la versión: 1.0
2.965 visualizaciones desde el 18 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

La aplicación cuenta con dos clases: Coordenada y Grid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
 
/**
 * Pequeña aplicación que consisteen generar una linea pulsando el punto inicial y el punto final.
 * Pulsando una tercera vez (cuando la linea se ha generado) se borrara la linea y se podra generar otra.
 * 
 * @author Alejandro Gonzalez Hernandez
 * @version 1.0
 */
public class Grid extends JFrame implements ActionListener{
 
	static Grid gt = null; //malla
 
	Coordenada inicial = null;
	Coordenada finall = null;
 
	ArrayList<JButton> repintar = new ArrayList<JButton>(); //array donde guardo los puntos que pinto para volver a restaurarlos
 
	static int rows = 100; //numero de filas
    static int cols = 100; //nmero columnas
 
	int color = 0;
	int flag = 0; //operacion a realizar (0 = punto ini, 1 = punto final, 2 = borrado)
	private JButton botones[][] = new JButton[rows][cols]; //matriz de los botones
	private Coordenada puntos[][] = new Coordenada[rows][cols]; // matriz de coordenadas de cada boton
 
 
    public Grid(int rows, int cols) {
    	//crear el Grid con el numero de botones y las coordenadas 
		//asignar a cada boton un valor para recoger la accion
		Container pane = getContentPane();
	    pane.setLayout(new GridLayout(rows, cols));
	    int val = 0; //valor a cada boton para distinguir cual presiono
	    for (int i = 0; i < rows; i++) {
	    	for (int j = 0; j < cols; j++) {
	    		JButton button = new JButton();
	    	    pane.add(button);
	    	    this.botones[rows-i-1][j] = button;
	    		this.botones[rows-i-1][j].setActionCommand(val+"");
	        	this.botones[rows-i-1][j].addActionListener(this);
	    	    this.puntos[rows-i-1][j] = new Coordenada(i, j);
	        	val++;
	    	}
	    }
    }
 
	/**
	 * Acciones al pulsar los botones
	 * 	flag = 0: boton inicial
	 * 	flag = 1: boton final
	 * 	flag = 2: borrado 
	 */
    public void actionPerformed(ActionEvent e){
 
    	switch(flag){
    		case 2:
    			for (int i = 0; i < repintar.size(); i++){
    				repintar.get(i).setBackground(null);
    			}
				flag = 0; break;
 
		  	case 1:
		  		int val = 0;
		  		for (int i = 0; i < rows; i++) {
			    	for (int j = 0; j < cols; j++) {
			    		if(e.getActionCommand().equals(val+"")){
			    			this.finall = this.puntos[i][j];
			    			//System.out.println(this.finall.toString());
			    			flag = 2;
			    			linea();
			    		}
			    		val++;
			    	}
			   } break;
 
	  		case 0:
	  			int val2 = 0;
	  			for (int i = 0; i < rows; i++) {
	  				for (int j = 0; j < cols; j++) {
			    		if(e.getActionCommand().equals(val2+"")){
			    			this.inicial = this.puntos[i][j];
			    			this.botones[rows-i-1][j].setBackground(Color.WHITE);
			    			flag = 1;
			    			//System.out.println(this.inicial.toString());
			    		}
			    		val2++;
			    	}
			  } break;
		  }//switch
	  }
 
    /**
     * Algoritmo que genera y dibuja la linea entre ambos puntos
     */
    public void linea(){
 
    	Color colLinea = null;
    	color = (int) (Math.random() * 6) + 1;
    	switch(color){
    	case 1: colLinea = Color.BLACK; break;
    	case 2: colLinea = Color.BLUE; break;
    	case 3: colLinea = Color.RED; break;
    	case 4: colLinea = Color.YELLOW; break;
    	case 5: colLinea = Color.GREEN; break;
    	case 6: colLinea = Color.MAGENTA; break;
    	}
 
    	int Xini = this.inicial.x();
    	int Yini = this.inicial.y();
    	int Xfin = this.finall.x();
    	int Yfin = this.finall.y();
    	double X = 0;
    	double Y = 0;
    	double L = 0;
 
    	double difX = Math.abs(Xfin - Xini);
    	double difY = Math.abs(Yfin - Yini);
 
    	if(difX >= difY){
    		L = difX;
    	}else{
    		L = difY;
    	}
 
    	difX = (Xfin - Xini) / L;
    	difY = (Yfin - Yini) / L;
 
    	X = Xini + 0.5;
    	Y = Yini + 0.5;
 
    	int i = 0;
    	while(i <= L){
    		botones[(int) Math.floor(X)][(int) Math.floor(Y)].setBackground(colLinea);
    		this.repintar.add(botones[(int) Math.floor(X)][(int) Math.floor(Y)]);
    		X = X + difX;
    		Y = Y + difY;
    		i++;
    	}
 
    }
 
    /**
     * Main que crea la malla con los botones y el tamñana de la interfaz
     */
	  public static void main(String[] args) {
		  //crear el Grid con los botones y darle la opcion de cerrar
		  gt = new Grid(rows, cols);
		  gt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		  gt.pack();
		  gt.setVisible(true);
	  }
}
 
 
 
/**
 * Clase que almacena la coordenada de cada boton de la malla
 * 
 * @author Alejandro Gonzalez Hernandez
 *
 */
public class Coordenada {
 
	private int X;
	private int Y;
 
	public Coordenada(int x, int y){
		this.X=x;
		this.Y=y;
	}
 
	public int x(){
		return this.X;
	}
 
	public int y(){
		return this.Y;
	}
 
	public void setX(int x){
		this.X=x;
	}
 
	public void setY(int y){
		this.Y=y;
	}
 
	public String toString(){
		return this.X + " " + this.Y;
	}
}



Comentarios sobre la versión: 1.0 (1)

Imágen de perfil
21 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3755