| WindowGraphCreator.java |
package lectures.composite.tree_dag_graph_objects_windows;
import util.annotations.WebDocuments;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
/**
* This class creates a generalization of a DAG structure, called a graph.
*
* Look at the code to see what makes it different from the tree and DAG creator.
*
*
*/
@WebDocuments({"Lectures/CompositeTreeDagGraphObjectsWindows.pptx", "Lectures/CompositeTreeDagGraphObjectsWindows.pdf", "Videos/CompositeTreeDagGraphObjectsWindows.avi"})
public class WindowGraphCreator {
public static void main (String[] args) {
createCycle();
}
public static void createCycle () {
JFrame frame = new JFrame();
JSplitPane splitPane = new JSplitPane();
frame.add(splitPane);
JPanel leftPanel = new JPanel();
JPanel rightPanel = new JPanel();
splitPane.setLeftComponent(leftPanel);
splitPane.setRightComponent(rightPanel);
JTextField textField = new JTextField("Edit me");
leftPanel.add(textField);
rightPanel.add(splitPane); // adding the parent of rightPanel as the child of rightPanel
JButton button = new JButton ("Press me");
rightPanel.add(button);
frame.setSize(200, 100);
frame.setVisible(true);
// No need for a breakpoint this time, we won't be going into the debugger
// unless you choose to for the next question.
}
/*
* This class creates a generalization of a DAG structure, called a graph.
*
* Look at the code to see what makes it different from the tree and DAG creator.
*
* A structure in which there is no restriction on the parent-child relationships
* is a general graph.
*
*
* It can have cycles, so we can make an ancestor of a node be its child.
*
* A DAG ("Directed Acyclic Graph") does not allow cycles but does allow children with
* multiple parents.
*
*
* Here we have created a graph with a cycle.
*
* (T/F) A graph can have cycles.
* (T/F) A DAG can have cycles.
*
*/
/*
* What should happen when the program runs?
*
* What does happen?
*
* If we create a cycle in a widget structure, Java:
* (a) removes the cycle
* (b) ignores the operation that creates a cycle.
* (c) gives a compile-time error.
* (d) gives a runtime error.
*
* A compile-time error means that Java is unable to build the code (you get
* something underlined in Eclipse, an error message talking about a
* compilation problem, etc).
* A runtime error means that the code gets built successfully, but crashes when it runs.
*
* You have probably seen enough compile-time errors to recognize them by this point,
* but if you want to be really sure, put a breakpoint on the first line of the program and
* run the debugger. If the code does run, you know it was built successfully. You can
* press "Resume" (F8) to continue with the execution of the program when it pauses.
*
* Next class: ADAGCartesianPlane
*/
}