Path: csiph.com!x330-a1.tempe.blueboxinc.net!feeder1.hal-mli.net!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!news-out.news.tds.net!newsreading01.news.tds.net!86597e80!not-for-mail From: "Sabine Dinis Blochberger" Subject: Re: Trying to put a backg Message-ID: X-Comment-To: comp.lang.java.gui Newsgroups: comp.lang.java.gui In-Reply-To: <7e0c42d4def4d@uwe> References: <7e0c42d4def4d@uwe> Content-Type: text/plain; charset=IBM437 Content-Transfer-Encoding: 8bit X-Gateway: time.synchro.net [Synchronet 3.15a-Win32 NewsLink 1.92] Lines: 66 Date: Wed, 27 Apr 2011 15:42:19 GMT NNTP-Posting-Host: 96.60.20.240 X-Complaints-To: news@tds.net X-Trace: newsreading01.news.tds.net 1303918939 96.60.20.240 (Wed, 27 Apr 2011 10:42:19 CDT) NNTP-Posting-Date: Wed, 27 Apr 2011 10:42:19 CDT Organization: TDS.net Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.gui:2990 To: comp.lang.java.gui Andrew Thompson wrote: > Sabine Dinis Blochberger wrote: > >> >Trying to put a background image in a JFrame > ... > >In option two, adding one JPanel with BorderLayout.EAST, the other with > >BorderLayout.SOUTH, all I get is a tiny square off the window bounds. > > Images load asynchonously, so maybe the image > is returning a -1,-1 size at time of pack(). One way > to fix that is to use a MediaTracker. Knute has some > good examples of loading and displaying images, here.. > > > The new contructor thus looks like this //--- public BackgroundPanel(String imgName) { try { image = createImageIcon(imgName); // Create a MediaTracker instance, // to montior loading of images final MediaTracker tracker = new MediaTracker(this); // Register it with media tracker tracker.addImage(image.getImage(), 1); // Wait until all images have loaded tracker.waitForAll(); } catch (Exception ex) { ex.printStackTrace(); } } //--- It didn't make a difference. The square is a few pixels large, you can actually see part of the image on it - it's "only" cropped. Then I tried to change the contentPanes layout, and it actually anchors the panel as I want: //--- private void addSimply() { final JPanel bgPanel = new BackgroundPanel("background.png"); bgPanel.setOpaque(false); final Container cp = getContentPane(); cp.setLayout(new BorderLayout()); cp.add(bgPanel, BorderLayout.EAST); bgPanel.setBounds(0, 0, getWidth(), getHeight()); } //--- However, the BackgroundPanel is now only a few pixels wide, and button 3 is not anchored to the right window edge anymore (I can live without that though)... -- Sabine Dinis Blochberger Op3racional www.op3racional.eu --- * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet! --- Synchronet 3.15a-Win32 NewsLink 1.92 Time Warp of the Future BBS - telnet://time.synchro.net:24