Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.gui > #4986
| Date | 2012-02-04 20:58 +0000 |
|---|---|
| From | Neil Morris <neil.morris4@googlemail.com> |
| Newsgroups | comp.lang.java.gui |
| Subject | Re: How do I paint on an existing Panel? |
| References | <4f16f997$0$2957$fa0fcedb@news.zen.co.uk> |
| Message-ID | <xuKdncnk5PeOAbDSnZ2dnUVZ8qidnZ2d@brightview.co.uk> (permalink) |
On 18/01/2012 16:55, A B wrote:
> I expect this is a really obvious question; I must get round to getting
> a bigger Java book! Part of my program starts by displaying a JPanel,
> with an image put on it using paintComponent(). How do I then draw some
> shapes over the top of that image when a particular button is clicked? I
> can't just put them in paintComponent(), because they haven't to appear
> at first. Would it be easier in an applet, rather than an application?
>
> I'm sure this comes up in the example programs in the JDK package, but
> for some mysterious reason they won't work. Wrong version of IE,
> probably; have to look into that.
>
HI
I had the same problem! my solution is as follows
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package imagelibrary;
//~--- JDK imports
------------------------------------------------------------
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.LayoutManager;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import java.io.InputStream;
import javax.swing.JPanel;
/**
*
* @author NeilLewisMorris
*/
public class ImagePanel extends JPanel {
private BufferedImage Bimage = null;
private File imageFile = null;
private InputStream imageInputStream = null;
private Dimension size;
private double panelWidth;
private double panelHeight;
private double BimageWidth;
private double BimageHeight;
private double scaledWidth;
private double scaledHeight;
private double scaled;
private double startX = 0;
private double startY = 0;
public ImagePanel() {
super();
}
public ImagePanel(LayoutManager layout) {
super(layout);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (Bimage != null) {
BimageWidth = Bimage.getWidth();
BimageHeight = Bimage.getHeight();
panelWidth = getWidth();
panelHeight = getHeight();
scaledWidth = panelWidth / BimageWidth;
scaledHeight = panelHeight / BimageHeight;
if (scaledWidth > scaledHeight) {
scaled = scaledHeight;
} else {
scaled = scaledWidth;
}
scaledWidth = scaled * BimageWidth;
scaledHeight = scaled * BimageHeight;
startX = (panelWidth - scaledWidth) / 2;
startY = (panelHeight - scaledHeight) / 2;
} else {
scaledWidth = 0;
scaledHeight = 0;
}
if (Bimage != null) {
g.drawImage(Bimage, (int)startX, (int)startY, (int)
scaledWidth, (int) scaledHeight, this);
}
}
public File getImageFile() {
return imageFile;
}
public boolean setImageFile(File file) throws IOException {
imageFile = file;
return setImageInputStream(new FileInputStream(imageFile));
}
public boolean setImageInputStream(InputStream inputstream) {
imageInputStream = inputstream;
try {
Bimage = ImageIO.read(imageInputStream);
} catch (IOException e) {
return false;
}
revalidate();
repaint();
return true;
}
}
Back to comp.lang.java.gui | Previous | Next — Previous in thread | Next in thread | Find similar
How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-01-18 16:55 +0000
Re: How do I paint on an existing Panel? Knute Johnson <nospam@knutejohnson.com> - 2012-01-18 09:29 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-01-18 18:12 +0000
Re: How do I paint on an existing Panel? Knute Johnson <nospam@knutejohnson.com> - 2012-01-18 15:00 -0800
Re: How do I paint on an existing Panel? markspace <-@.> - 2012-01-18 10:55 -0800
Re: How do I paint on an existing Panel? Roedy Green <see_website@mindprod.com.invalid> - 2012-01-20 19:54 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-01-30 17:59 +0000
Re: How do I paint on an existing Panel? Neil Morris <neil.morris4@googlemail.com> - 2012-02-04 20:58 +0000
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-02-05 01:01 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-10 12:10 +0000
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-16 20:55 +0000
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-02-16 13:04 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-16 21:33 +0000
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-16 21:05 +0000
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-02-16 13:28 -0800
Re: How do I paint on an existing Panel? "John B. Matthews" <nospam@nospam.invalid> - 2012-02-16 21:18 -0500
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-17 18:20 +0000
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-02-17 10:45 -0800
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-02-17 10:49 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-19 19:31 +0000
Re: How do I paint on an existing Panel? Lew <noone@lewscanon.com> - 2012-02-19 14:41 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-03-04 16:51 +0000
Re: How do I paint on an existing Panel? Jeff Higgins <jeff@invalid.invalid> - 2012-03-04 12:36 -0500
Re: How do I paint on an existing Panel? Lew <noone@lewscanon.com> - 2012-03-04 10:47 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-03-14 17:39 +0000
Re: How do I paint on an existing Panel? Lew <lewbloch@gmail.com> - 2012-03-14 11:07 -0700
Re: How do I paint on an existing Panel? "John B. Matthews" <nospam@nospam.invalid> - 2012-03-14 23:01 -0400
Re: How do I paint on an existing Panel? markspace <-@.> - 2012-03-15 09:30 -0700
Re: How do I paint on an existing Panel? Knute Johnson <nospam@knutejohnson.com> - 2012-02-17 17:01 -0800
Re: How do I paint on an existing Panel? Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2012-02-16 13:59 -0800
Re: How do I paint on an existing Panel? "A B" <@bleBaker.uk> - 2012-02-17 18:07 +0000
Re: How do I paint on an existing Panel? Knute Johnson <nospam@knutejohnson.com> - 2012-02-17 17:04 -0800
Re: How do I paint on an existing Panel? Knute Johnson <nospam@knutejohnson.com> - 2012-02-17 17:08 -0800
csiph-web