Does it matter what language a tool is implemented in? I don't know of any limitations in Visio that prevent you from documenting Java programs.
Some tools may have special features, like
Rational, that facilitate keeping the documentation and the code in sync, but they require large investments in training and cash.
I design gui's as images using
The Gimp or, in the case of web applications, with plain static HTML.