Made the drawing for circular lists.
This commit is contained in:
parent
308c9b0fd9
commit
108eedaff2
@ -15,6 +15,7 @@
|
|||||||
</properties>
|
</properties>
|
||||||
<properties id="javafx-properties">
|
<properties id="javafx-properties">
|
||||||
<options>
|
<options>
|
||||||
|
<option name="alias" value="" />
|
||||||
<option name="appClass" value="cl.cromer.estructuras.Main" />
|
<option name="appClass" value="cl.cromer.estructuras.Main" />
|
||||||
<option name="customManifestAttributes">
|
<option name="customManifestAttributes">
|
||||||
<list>
|
<list>
|
||||||
@ -29,8 +30,10 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
<option name="description" value="" />
|
<option name="description" value="" />
|
||||||
|
<option name="enabledSigning" value="true" />
|
||||||
<option name="height" value="768" />
|
<option name="height" value="768" />
|
||||||
<option name="htmlParamFile" value="" />
|
<option name="htmlParamFile" value="" />
|
||||||
|
<option name="keystore" value="" />
|
||||||
<option name="nativeBundle" value="all" />
|
<option name="nativeBundle" value="all" />
|
||||||
<option name="paramFile" value="" />
|
<option name="paramFile" value="" />
|
||||||
<option name="title" value="Estructuras de Datos" />
|
<option name="title" value="Estructuras de Datos" />
|
||||||
|
@ -3,7 +3,11 @@ package cl.cromer.estructuras;
|
|||||||
import javafx.animation.Animation;
|
import javafx.animation.Animation;
|
||||||
import javafx.animation.PauseTransition;
|
import javafx.animation.PauseTransition;
|
||||||
import javafx.animation.SequentialTransition;
|
import javafx.animation.SequentialTransition;
|
||||||
|
import javafx.geometry.Pos;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
import javafx.scene.canvas.Canvas;
|
||||||
|
import javafx.scene.canvas.GraphicsContext;
|
||||||
|
import javafx.scene.layout.Pane;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.shape.Circle;
|
import javafx.scene.shape.Circle;
|
||||||
@ -102,7 +106,7 @@ public class Grafico {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear una linea vertical
|
* Crear una linea vertical.
|
||||||
* @return StackPane: Devolver el stackpane que contiene la linea vertical.
|
* @return StackPane: Devolver el stackpane que contiene la linea vertical.
|
||||||
*/
|
*/
|
||||||
public static StackPane crearLineaVertical() {
|
public static StackPane crearLineaVertical() {
|
||||||
@ -117,6 +121,45 @@ public class Grafico {
|
|||||||
return stackPane;
|
return stackPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Crear la linea circular con flecha.
|
||||||
|
* @param cajas int: La cantidad de cajas que están.
|
||||||
|
* @return StackPane: Devolver el stackpane que contiene la linea horizontal.
|
||||||
|
*/
|
||||||
|
public static Pane crearLineaCircular(int cajas) {
|
||||||
|
int height = (cajas - 1) * (40 + 20 + 10);
|
||||||
|
height = height + 20 + 10;
|
||||||
|
|
||||||
|
Line top = new Line();
|
||||||
|
top.setStartY(20);
|
||||||
|
top.setEndY(20);
|
||||||
|
top.setStartX(0);
|
||||||
|
top.setEndX(20);
|
||||||
|
|
||||||
|
Polygon flechaDerecha = new Polygon();
|
||||||
|
flechaDerecha.getPoints().addAll(
|
||||||
|
10.0, 15.0,
|
||||||
|
20.0, 20.0,
|
||||||
|
10.0, 25.0
|
||||||
|
);
|
||||||
|
|
||||||
|
Line vertical = new Line();
|
||||||
|
vertical.setStartY(20);
|
||||||
|
vertical.setEndY(height);
|
||||||
|
|
||||||
|
Line bottom = new Line();
|
||||||
|
bottom.setStartY(height);
|
||||||
|
bottom.setEndY(height);
|
||||||
|
bottom.setStartX(0);
|
||||||
|
bottom.setEndX(20);
|
||||||
|
|
||||||
|
|
||||||
|
Pane stackPane = new Pane();
|
||||||
|
stackPane.getChildren().addAll(top, flechaDerecha, vertical, bottom);
|
||||||
|
|
||||||
|
return stackPane;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un rectangulo con texto adentro.
|
* Crear un rectangulo con texto adentro.
|
||||||
* @param colores Colores: Los colores para dar color al rectangulo.
|
* @param colores Colores: Los colores para dar color al rectangulo.
|
||||||
|
@ -3,6 +3,7 @@ package cl.cromer.estructuras;
|
|||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
import javafx.scene.canvas.Canvas;
|
||||||
import javafx.scene.control.ButtonBar;
|
import javafx.scene.control.ButtonBar;
|
||||||
import javafx.scene.control.ButtonType;
|
import javafx.scene.control.ButtonType;
|
||||||
import javafx.scene.control.Dialog;
|
import javafx.scene.control.Dialog;
|
||||||
@ -29,6 +30,11 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
*/
|
*/
|
||||||
@FXML private VBox contenidoLista;
|
@FXML private VBox contenidoLista;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Donde poner el contenido de lista circular.
|
||||||
|
*/
|
||||||
|
@FXML private VBox contenidoListaCircular;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Donde va el codigo a mostrar a la pantalla.
|
* Donde va el codigo a mostrar a la pantalla.
|
||||||
*/
|
*/
|
||||||
@ -331,19 +337,20 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
grafico.removerDestacar();
|
grafico.removerDestacar();
|
||||||
colores = new Colores();
|
colores = new Colores();
|
||||||
contenidoLista.getChildren().clear();
|
contenidoLista.getChildren().clear();
|
||||||
|
contenidoListaCircular.getChildren().clear();
|
||||||
|
|
||||||
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) {
|
||||||
for (int i = 0; i < listaEnlazada.size(); i++) {
|
for (int i = 0; i < listaEnlazada.size(); i++) {
|
||||||
Enlace enlace = listaEnlazada.getIndice(i);
|
Enlace enlace = listaEnlazada.getIndice(i);
|
||||||
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) {
|
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) {
|
||||||
dibujarSimple(enlace);
|
dibujarSimple(enlace, false);
|
||||||
}
|
}
|
||||||
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) {
|
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) {
|
||||||
if (i != listaEnlazada.size() - 1) {
|
if (i != listaEnlazada.size() - 1) {
|
||||||
dibujarDoble(enlace);
|
dibujarDoble(enlace, (i == 0));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dibujarSimple(enlace);
|
dibujarSimple(enlace, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
@ -352,9 +359,12 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
else {
|
else {
|
||||||
for (int i = 0; i < listaEnlazadaCircular.size(); i++) {
|
for (int i = 0; i < listaEnlazadaCircular.size(); i++) {
|
||||||
Enlace enlace = listaEnlazadaCircular.getIndice(i);
|
Enlace enlace = listaEnlazadaCircular.getIndice(i);
|
||||||
dibujarSimple(enlace);
|
dibujarSimple(enlace, (i == listaEnlazadaCircular.size() - 1));
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
|
if (listaEnlazadaCircular.size() > 0) {
|
||||||
|
contenidoListaCircular.getChildren().addAll(Grafico.crearLineaCircular(listaEnlazadaCircular.size()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,19 +372,29 @@ public class ListaEnlazdaController implements Initializable {
|
|||||||
* Dibujarlo con una flecha.
|
* Dibujarlo con una flecha.
|
||||||
* @param enlace Object: El enlace que tiene la llave y valor.
|
* @param enlace Object: El enlace que tiene la llave y valor.
|
||||||
*/
|
*/
|
||||||
private void dibujarSimple(Enlace enlace) {
|
private void dibujarSimple(Enlace enlace, boolean sinFlecha) {
|
||||||
contenidoLista.getChildren().addAll(
|
contenidoLista.getChildren().addAll(
|
||||||
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
|
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave()))
|
||||||
Grafico.crearLineaVertical(),
|
|
||||||
Grafico.crearFlechaAbajo()
|
|
||||||
);
|
);
|
||||||
|
if (!sinFlecha) {
|
||||||
|
contenidoLista.getChildren().addAll(
|
||||||
|
Grafico.crearLineaVertical(),
|
||||||
|
Grafico.crearFlechaAbajo()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dibujarlo con dos flechas.
|
* Dibujarlo con dos flechas.
|
||||||
* @param enlace El enlace que tiene la llave y valor.
|
* @param enlace El enlace que tiene la llave y valor.
|
||||||
*/
|
*/
|
||||||
private void dibujarDoble(Enlace enlace) {
|
private void dibujarDoble(Enlace enlace, boolean primer) {
|
||||||
|
if (primer) {
|
||||||
|
contenidoLista.getChildren().addAll(
|
||||||
|
Grafico.crearFlechaArriba(),
|
||||||
|
Grafico.crearLineaVertical()
|
||||||
|
);
|
||||||
|
}
|
||||||
contenidoLista.getChildren().addAll(
|
contenidoLista.getChildren().addAll(
|
||||||
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
|
Grafico.crearCaja(colores, String.valueOf(enlace.getLlave()), String.valueOf(enlace.getLlave())),
|
||||||
Grafico.crearFlechaArriba(),
|
Grafico.crearFlechaArriba(),
|
||||||
|
@ -16,6 +16,8 @@ import java.util.Optional;
|
|||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import static cl.cromer.estructuras.ListaEnlazadaTipos.SIMPLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controlar las acciones cuando una opción es elegido en el menu.
|
* Controlar las acciones cuando una opción es elegido en el menu.
|
||||||
*/
|
*/
|
||||||
@ -145,7 +147,7 @@ public class MenuController extends VBox implements Initializable {
|
|||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
protected void menuListaEnlazadaSimple() {
|
protected void menuListaEnlazadaSimple() {
|
||||||
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.SIMPLE);
|
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(SIMPLE);
|
||||||
loadStage(
|
loadStage(
|
||||||
resourceBundle.getString("tituloListaEnlazadaSimple"),
|
resourceBundle.getString("tituloListaEnlazadaSimple"),
|
||||||
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
|
||||||
|
@ -20,7 +20,10 @@
|
|||||||
<Button text="%buscar" onAction="#botonBuscar" />
|
<Button text="%buscar" onAction="#botonBuscar" />
|
||||||
<TextFieldLimited fx:id="valorLista" maxLength="2" prefWidth="40" />
|
<TextFieldLimited fx:id="valorLista" maxLength="2" prefWidth="40" />
|
||||||
</HBox>
|
</HBox>
|
||||||
<VBox fx:id="contenidoLista" alignment="CENTER" />
|
<HBox alignment="TOP_CENTER" VBox.vgrow="ALWAYS" spacing="0">
|
||||||
|
<VBox fx:id="contenidoListaCircular" alignment="TOP_LEFT" />
|
||||||
|
<VBox fx:id="contenidoLista" alignment="TOP_CENTER" />
|
||||||
|
</HBox>
|
||||||
</VBox>
|
</VBox>
|
||||||
<StackPane alignment="TOP_LEFT" minWidth="450">
|
<StackPane alignment="TOP_LEFT" minWidth="450">
|
||||||
<Text fx:id="codigoLista" />
|
<Text fx:id="codigoLista" />
|
||||||
|
Loading…
Reference in New Issue
Block a user