Creating a GUI which is implemented with a ImageJ Window



I am trying to create develop a GUI to visualise 3D .tiff files.
This for use in a laboratory and I need to program it specifically.

I was hoping to create a GUI from scratch and Incorporate a Window from Image J with the plugin called 3D Viewer . Is this possible to do? Can I embed an ImageJ window in a custom made GUI ? How do I do so?

If not will I have to code the 3D visualisation from scratch? Can I get help with that?


Hello Camilla -

I don’t know enough to give you a clear answer to your specific
question. (Others on this forum with better knowledge of the
ImageJ architecture will likely be able to help.) But I do have
some suggestions and clarifying questions.

First, what language and GUI framework are you intending to use to
develop your from-scratch GUI? (For example, “Language is C++;
GUI framework is Qt,” could be an answer to that question.)

ImageJ is written java, and started out using java awt as its GUI
framework, but is now being migrated (has been migrated?) to
the java swing GUI framework. So if you’re intending to do your
development work in java, using ImageJ in your application should
be pretty easy. But how one might “embed” the 3D Viewer window
in a custom, non-ImageJ GUI is an ImageJ / java question that I
am not competent to answer.

Second, why do you want to write your own custom GUI? Why
not use ImageJ itself as your application platform, and just run
3D Viewer from ImageJ? You can add any custom logic you
need by writing ImageJ plugins in java or in one of ImageJ’s
supported scripting languages. You can call your own GUI code,
written, for example, in java swing, from your ImageJ plugin.

We could give more concrete suggestions if we had further
detail about what you want to do. Could you describe the actual
visualization and processing you want to do, and maybe post
some sample data? What do you want 3D Viewer to do for
you, and more importantly, what do you need that 3D Viewer
or other parts of ImageJ don’t already do?

Lastly, you can use any and all of the ImageJ libraries in your
own free-standing (java) application, so your application can
“borrow” any ImageJ functionality it finds useful. (You can even
launch an instance of ImageJ from your own application – from
your own “main” function – although that, alone, doesn’t tell you
how to embed an ImageJ window in your own GUI.)

Thanks, mm


Thank you very much for your Interest. I am deciding now what language and GUI framework to use to build my GUI. So I am open to suggestions as to which one you think may be the easiest or most convenient to use.

I work in a lab where we collect data that can be reconstructed and visualised in 3D. I am trying to build a user friendly, simplified version of 3D Viewer with particular characteristics so that the Data we collect can be shown to the public in an easy Interactive envirnoment.

For this reason I would like to create my own 3D Visualizer and open the ImageJ window which shows the 3D reconstruction of the image from my GUI, this only to simplify my work, in that I would not have to code the actual reconstruction algorithm. I have included the type of data I am dealing with, this is just a series of slices in .tiff images on the z axis.

I understand from your reply that if I should use a Java based GUI framework, such as Java swing I would be able to “borrow” the ImageJ 3D Visualisation and Recontruction functionality? If so could you suggest how to go about doing this?

Thank you in advance for your help,



Hello Camilla -

The most convenient language and GUI framework to use would be
one you already know how to use. For example, learning to program
in java, and learning to do GUI programming in java swing, would be
a substantive task in its own right.

What language(s) do you know already, and what GUI framework(s)?

If you’re not already familiar with any specific GUI frameworks, I would
recommend java swing for the project you describe because java swing
is reasonably good, and most importantly, because that’s what ImageJ

All of ImageJ is written in java, so all of the algorithms – code, classes –
can be used directly by an application that you would write in java, so
“borrowing” any of that logic would be straightforward.

What I’m foggier on is the issue of “borrowing” the GUI presentation.
The 3D Viewer (GUI and all) might be implemented as a
free-standing, modular class that you could instantiate directly from
your custom application. Or it might be tightly integrated into the
ImageJ application / framework, which might make “borrowing”
more difficult. (I just don’t know.) Others on this forum who know
more about the ImageJ architecture should be able to give you a
clear-cut answer.

But, again, if it turns out to be tricky to “borrow” the 3D Viewer
into your own custom application, why not use ImageJ as your
application, and add any custom logic or display to ImageJ by
writing plugins? As long as you are using java (or a scripting
language supported by ImageJ), you can do anything you want.
You could open up your own custom windows to browse for files
or set parameters, write any custom logic you might need, and
when it comes time to display the results in the 3D Viewer, just
use the ImageJ framework to open up the 3D Viewer for you.

ImageJ has lots of useful stuff already built in, so if you use ImageJ
itself for your application, you get all that more or less “for free.”

By the way, I can’t see your sample data. Your embedded link shows
up for me as the pseudo-url:


(I don’t know how to attach files or upload data on this forum, so
maybe someone else could suggest the best way to fix this.)

Thanks, mm