If you want to create graphs (e.g. visualize numeric data, etc.), as duffymo said, JFreeChart is probably the best option.
On the other hand, if you want to create diagrams (from flowcharts to UML), I would recommend jGraph (open source) or even more powerful (but closed source): yFiles
source share