Login  Register

Re: Display an image on a JPanel

Posted by ctrueden on Oct 24, 2013; 6:10pm
URL: http://imagej.273.s1.nabble.com/Display-an-image-on-a-JPanel-tp5005268p5005301.html

Hi Robert,

Can you please post a complete example demonstrating the problem?
GitHub.com is a nice place to do this. It will make it much easier for
people to help you.

Regards,
Curtis


On Thu, Oct 24, 2013 at 12:25 PM, Robert Lockwood <[hidden email]>wrote:

> 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
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html