http://imagej.273.s1.nabble.com/Display-an-image-on-a-JPanel-tp5005268p5005301.html
GitHub.com is a nice place to do this. It will make it much easier for
people to help you.
> In order to have an ImagePanel for my application I downloaded the
> JImagePanel from GitHub in response to Johannes reply, created a class for
> it in my project changing the package to my package in Eclipse Keppler.
>
> In my GUI initialization where the GUI is built I have:
>
> jImagePanel = new JImagePanel();
> jImagePanel.setName("jImagePanel");
> jImagePanel.setBorder(new LineBorder(new Color(0, 0, 0)));
> jImagePanel.setBounds(10, 10, 641, 481);
> jImagePanel.setBackground(Color.WHITE);
> jImagePanel.setOpaque(false);
> pnlBase.add(jImagePanel);
>
> when the image is read I display it with:
>
> if (!jImagePanel.isOpaque()) {
> jImagePanel.setOpaque(true);
> }
>
> jImagePanel.updateImage(imp);
>
> When I shift from Source to Design Google Builder crashes indicating
> problems in JImagePanel's method paintCompnent().
>
> When I attempt to run it the GUI does not display properly, the contents of
> the JFrame are gray. Moving the cursor over the contents exposes all the
> JButtons, but nothing else, and clicking on the button results in the
> expected display of my file selector. If the file is selected the image
> displays correctly as do all the other visual objects in the JFrame.
>
> I get NullPointerException errors that finger the same line that trying to
> move to Display fingers.
>
> I modified the below code to check that imp was not null but it had no
> effect.
>
> Johannes gave another URL for the code but I don't know how to get that
> code.
>
> I guess I'm partway there ...
>
> From JImagePanel:
>
> @Override
> public void paintComponent(Graphics g) {
> super.paintComponent(g);
> try {
> if (imageUpdated) {
> imageUpdated = false;
> imp.updateImage();
> }
> Java2.setBilinearInterpolation(g,
> Prefs.interpolateScaledImages);
>
> Image img = imp.getProcessor().createImage(); // THIS IS THE
> ERROR LINE
>
> if (img != null) {
> waitForImage(img);
> int displayWidth = (int) (srcRect.width * magnification);
> int displayHeight = (int) (srcRect.height * magnification);
> Dimension size = getSize();
> int offsetX = (size.width - displayWidth) / 2;
> int offsetY = (size.height - displayHeight) / 2;
> g.translate(offsetX, offsetY);
> g.drawImage(img, 0, 0, displayWidth, displayHeight,
> srcRect.x,
> srcRect.y, srcRect.x + srcRect.width, srcRect.y
> + srcRect.height, null);
> }
> drawOverlay(g);
> } catch (OutOfMemoryError e) {
> IJ.outOfMemory("Paint");
> }
> }
>
>
>
>
> On Wed, Oct 23, 2013 at 7:31 AM, Johannes Schindelin <
>
[hidden email]> wrote:
>
> > Hi Robert,
> >
> > On Tue, 22 Oct 2013, Robert Lockwood wrote:
> >
> > > I've an application that collects a monochrome "image" as an array of
> > > "unsigned short" (short[]), saves it as a TIFF (thanks for that help)
> > > and displays it on JPanel. I'd rather use the ImageJ methods etc. to
> > > display the image on the JPanel and reduce my code.
> > >
> > > Is this possible? How?
> >
> > Unfortunately, the ImageCanvas -- ImageJ 1.x' AWT component intended to
> > display images -- is tightly bound to the ImageWindow class and does not
> > play well with other components in the same AWT container.
> >
> > Besides, all the claims that AWT and Swing mix well now seem to be
> > premature still.
> >
> > Therefore we integrated Simon Andrews' JImagePanel into Fiji:
> >
> >
> >
>
https://github.com/fiji/fiji/blob/master/src-plugins/fiji-lib/src/main/java/fiji/util/gui/JImagePanel.java> >
> > It should be relatively easy to integrate into your software: it is
> > contained in the fiji-lib artifact available at
http://maven.imagej.net/> .
> >
> > You could also extract the file and insert into your own source code, of
> > course, but you'd ask for diverging versions.
> >
> > Ciao,
> > Johannes
> >
>
>
>
> --
> When I was 12 I thought I would live forever.
> So far, so good.
>
> --
> ImageJ mailing list:
http://imagej.nih.gov/ij/list.html>