Para mostrar un gráfico visualmente, a cada vértice se le debe asignar una ubicación. La sección anterior presentó cómo modelar un gráfico usando la interfaz Graph, la clase AbstractGraph y la clase UnweightedGraph. Esta sección analiza cómo mostrar gráficos gráficamente. Para mostrar un gráfico, necesita saber dónde se muestra cada vértice y el nombre de cada vértice. Para garantizar que se pueda mostrar un gráfico, definimos una interfaz llamada Displayable que tiene los métodos para obtener las coordenadas x- y y- y sus nombres, y haga que los vértices sean instancias de Mostrables, en el siguiente código.
Ahora se puede mostrar un gráfico con vértices visualizables en un panel llamado GraphView, como se muestra en el siguiente código.
Para mostrar un gráfico en un panel, simplemente cree una instancia de GraphView pasando el gráfico como argumento en el constructor (línea 9). La clase para el vértice del gráfico debe implementar la interfaz Displayable para poder mostrar los vértices (líneas 13 a 22). Para cada índice de vértice i, al invocar graph.getNeighbors(i) se devuelve su lista de adyacencia (línea 26). En esta lista, puede encontrar todos los vértices adyacentes a i y dibujar una línea para conectar i con su vértice adyacente (líneas 27 a 34).
El siguiente código proporciona un ejemplo de cómo mostrar el gráfico en la figura anterior, como se muestra en la figura siguiente.
import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; public class DisplayUSMap extends Application { @Override // Override the start method in the Application class public void start(Stage primaryStage) { City[] vertices = {new City("Seattle", 75, 50), new City("San Francisco", 50, 210), new City("Los Angeles", 75, 275), new City("Denver", 275, 175), new City("Kansas City", 400, 245), new City("Chicago", 450, 100), new City("Boston", 700, 80), new City("New York", 675, 120), new City("Atlanta", 575, 295), new City("Miami", 600, 400), new City("Dallas", 408, 325), new City("Houston", 450, 360)}; // Edge array for graph int[][] edges = { {0, 1}, {0, 3}, {0, 5}, {1, 0}, {1, 2}, {1, 3}, {2, 1}, {2, 3}, {2, 4}, {2, 10}, {3, 0}, {3, 1}, {3, 2}, {3, 4}, {3, 5}, {4, 2}, {4, 3}, {4, 5}, {4, 7}, {4, 8}, {4, 10}, {5, 0}, {5, 3}, {5, 4}, {5, 6}, {5, 7}, {6, 5}, {6, 7}, {7, 4}, {7, 5}, {7, 6}, {7, 8}, {8, 4}, {8, 7}, {8, 9}, {8, 10}, {8, 11}, {9, 8}, {9, 11}, {10, 2}, {10, 4}, {10, 8}, {10, 11}, {11, 8}, {11, 9}, {11, 10} }; Graphgraph = new UnweightedGraph(vertices, edges); // Create a scene and place it in the stage Scene scene = new Scene(new GraphView(graph), 750, 450); primaryStage.setTitle("DisplayUSMap"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage } public static void main(String[] args) { Application.launch(args); } static class City implements Displayable { private int x, y; private String name; City(String name, int x, int y) { this.name = name; this.x = x; this.y = y; } @Override public int getX() { return x; } @Override public int getY() { return y; } @Override public String getName() { return name; } } }
La clase Ciudad está definida para modelar los vértices con sus coordenadas y nombres (líneas 39–63). El programa crea un gráfico con los vértices del tipo Ciudad (línea 30). Dado que City implementa Displayable, un objeto GraphView creado para el gráfico muestra el gráfico en el panel (línea 33).
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3