Last updated on 2014-09-08
I build a reference program to test some of the styles that JGraphX provides. This is the result of the program:

The full source code for this program follows:
package com.vainolo.jgraph;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.Color;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxUtils;
import com.mxgraph.view.mxGraph;
public class JGraphLearning5 extends JFrame {
private static final long serialVersionUID = -2398843485837905351L;
private static final int X_SOURCE = 50, Y_SOURCE = 50 ,PAGE_WIDTH = 1300,
HORIZONTAL_STEP = 150, VERTICAL_STEP = 100, SHAPE_WIDTH = 50,
SHAPE_HEIGHT = 60;
public JGraphLearning5() {
mxGraph graph = new mxGraph();
mxGraphComponent graphComponent = new mxGraphComponent(graph);
graphComponent.getViewport().setOpaque(true);
graphComponent.getViewport().setBackground(Color.WHITE);
int x = X_SOURCE, y = Y_SOURCE;
for (JGraphShape shape : JGraphShape.values()) {
graph.insertVertex(null, null, shape.mxShapeConstantValue, x, y, SHAPE_WIDTH, SHAPE_HEIGHT, mxConstants.STYLE_SHAPE+"="+shape.mxShapeConstantValue);
x += HORIZONTAL_STEP;
if(x > PAGE_WIDTH) { x = X_SOURCE; y += VERTICAL_STEP; }
}
// Some options for the shapes:
x = X_SOURCE; y += VERTICAL_STEP;
String styleShape = mxConstants.STYLE_SHAPE+"="+mxConstants.SHAPE_RECTANGLE+";";
for(JGraphStyle style: JGraphStyle.values()) {
graph.insertVertex(null, null, style.name(), x, y, SHAPE_WIDTH, SHAPE_HEIGHT, styleShape+style.mxStyle);
x += HORIZONTAL_STEP;
if(x > PAGE_WIDTH) { x = X_SOURCE; y += VERTICAL_STEP; }
}
styleShape = mxConstants.STYLE_SHAPE+"="+mxConstants.SHAPE_ELLIPSE+";";
for(JGraphStyle style: JGraphStyle.values()) {
graph.insertVertex(null, null, style.name(), x, y, SHAPE_WIDTH, SHAPE_HEIGHT, styleShape+style.mxStyle);
x += HORIZONTAL_STEP;
if(x > PAGE_WIDTH) { x = X_SOURCE; y += VERTICAL_STEP; }
}
getContentPane().setLayout(new BorderLayout(0,0));
getContentPane().add(graphComponent, BorderLayout.CENTER);
}
public enum JGraphShape {
RECTANGLE(mxConstants.SHAPE_RECTANGLE),
ELLIPSE(mxConstants.SHAPE_ELLIPSE),
DOUBLE_ELLIPSE(mxConstants.SHAPE_DOUBLE_ELLIPSE),
RHOMBUS(mxConstants.SHAPE_RHOMBUS),
LINE(mxConstants.SHAPE_LINE),
IMAGE(mxConstants.SHAPE_IMAGE),
// doesn't work ARROW(mxConstants.SHAPE_ARROW),
CURVE(mxConstants.SHAPE_CURVE),
LABEL(mxConstants.SHAPE_LABEL),
CILINDER(mxConstants.SHAPE_CYLINDER),
SWIMLANE(mxConstants.SHAPE_SWIMLANE),
CONNECTOR(mxConstants.SHAPE_CONNECTOR),
ACTOR(mxConstants.SHAPE_ACTOR),
CLOUD(mxConstants.SHAPE_CLOUD),
TRIANGLE(mxConstants.SHAPE_TRIANGLE),
HEXAGON(mxConstants.SHAPE_HEXAGON);
public String mxShapeConstantValue;
JGraphShape(String mxShapeConstantValue) {
this.mxShapeConstantValue = mxShapeConstantValue;
}
}
public enum JGraphStyle {
OPACITY(mxConstants.STYLE_OPACITY, 50.0),
TEXT_OPACITY(mxConstants.STYLE_TEXT_OPACITY, 50.0),
OVERFLOW_1(mxConstants.STYLE_OVERFLOW, "visible"),
OVERFLOW_2(mxConstants.STYLE_OVERFLOW, "hidden"),
OVERFLOW_3(mxConstants.STYLE_OVERFLOW, "fill"),
ROTATION(mxConstants.STYLE_ROTATION, 45),
FILLCOLOR(mxConstants.STYLE_FILLCOLOR, mxUtils.getHexColorString(Color.RED)),
GRADIENTCOLOR(mxConstants.STYLE_GRADIENTCOLOR, mxUtils.getHexColorString(Color.BLUE)),
GRADIENT_DIRECTION(mxConstants.STYLE_GRADIENT_DIRECTION, mxConstants.DIRECTION_EAST, mxConstants.STYLE_GRADIENTCOLOR, mxUtils.getHexColorString(Color.YELLOW)),
STROKECOLOR(mxConstants.STYLE_STROKECOLOR, mxUtils.getHexColorString(Color.GREEN)),
STROKEWIDTH(mxConstants.STYLE_STROKEWIDTH, 5),
ALIGN(mxConstants.STYLE_ALIGN, mxConstants.ALIGN_LEFT),
VERTICAL_ALIGN(mxConstants.STYLE_VERTICAL_ALIGN, mxConstants.ALIGN_BOTTOM),
LABEL_POSITION(mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_LEFT),
VERTICAL_LABEL_POSITION(mxConstants.STYLE_VERTICAL_LABEL_POSITION, mxConstants.ALIGN_BOTTOM),
GLASS(mxConstants.STYLE_GLASS, 1),
NOLABEL(mxConstants.STYLE_NOLABEL, 1),
LABEL_BACKGROUNDCOLOR(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR, mxUtils.getHexColorString(Color.CYAN)),
LABEL_BORDERCOLOR(mxConstants.STYLE_LABEL_BORDERCOLOR, mxUtils.getHexColorString(Color.PINK)),
SHADOW(mxConstants.STYLE_SHADOW, true),
DASHED(mxConstants.STYLE_DASHED, true),
ROUNDED(mxConstants.STYLE_ROUNDED, true),
HORIZONTAL(mxConstants.STYLE_HORIZONTAL, false),
FONTCOLOR(mxConstants.STYLE_FONTCOLOR, mxUtils.getHexColorString(Color.ORANGE)),
FONTFAMILY(mxConstants.STYLE_FONTFAMILY, "Times New Roman"),
FONTSIZE(mxConstants.STYLE_FONTSIZE, 15),
FONTSTYLE(mxConstants.STYLE_FONTSTYLE, mxConstants.FONT_BOLD),
;
public String mxStyle;
JGraphStyle(Object... values) {
mxStyle = "";
for (int i = 0; i < values.length; i++) {
if(i%2==0) {
mxStyle += values[i] + "=";
} else {
mxStyle += values[i] + ";";
}
}
}
}
public static void main(String args[]) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() {
JGraphLearning5 jgl = new JGraphLearning5();
jgl.setExtendedState(JFrame.MAXIMIZED_BOTH);
jgl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jgl.setVisible(true);
}
});
}
}
Thank you . Keep it coming.. =)
Really helpful. Thanks!