Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > Problem with basic JFrame layout manager

Reply
Thread Tools

Problem with basic JFrame layout manager

 
 
Mark Space
Guest
Posts: n/a
 
      10-04-2007
Hey all, here's a problem I can't lick.

Using just a basic JFrame, it should have a basic BorderLayout layout
manager by default. The docs strongly imply it, and it's manifest in
the code (source and runtime).

However, if I add my own component to the content pane, the JFrame when
displayed is as small as possible, only just large enough to display
it's decorations. I implement all the size methods, and it still
doesn't seem to do anything with them.

Does anyone know what I might be doing wrong?

Sample code follows. If I print out the classes involved (the first and
the second commented-out blocks) everything is as you'd expect. A
BorderLayout is present by default.

If I manually set the size of the content pane (first and third
commented-out blocks), the display is correct.

/*
* Captcha.java
*
* Created on Oct 3, 2007, 12:38:11 PM
*
*/

package captcha.oak;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.LayoutManager;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import static javax.swing.WindowConstants.*;


public class Captcha extends java.awt.Component {

private static final int WIDTH = 250;
private static final int HEIGHT = 85;
private BufferedImage image;

/** Creates and displays a test captcha.
*
* @param args The command line arguments are ignored.
*/
public static void main(String[] args) {
// TODO code application logic here
Captcha c = new Captcha();
JFrame jf = new JFrame("Captcha");

jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
jf.getContentPane().add(c, BorderLayout.CENTER);

// java.awt.Container cp = jf.getContentPane();

// LayoutManager lm = cp.getLayout();
// System.err.println( cp.getClass().getName()+":: "+cp);
// System.err.println( lm.getClass().getName()+"::"+lm );
// System.err.println( lm.getClass().getSuperclass().getName());

// cp.setPreferredSize(c.getPerferredSize());

jf.pack();

jf.setVisible(true);
}

public Captcha() {

int[] data = new int[WIDTH * HEIGHT];

for (int i = 0; i < data.length; i++) {
int red = randomInt(255);
int green = randomInt(255);
int blue = randomInt(255);
data[i] = (red << 16) | (green << | blue;
}
this.image = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB);
image.setRGB(0, 0, WIDTH, HEIGHT, data, 0, WIDTH);
}

private int randomInt(int i) {
return (int) (java.lang.Math.random()* i);
}

public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}

public Dimension getPerferredSize()
{
return getSize();
}
public Dimension getSize()
{
return new Dimension(WIDTH,HEIGHT);
}

public Dimension getMaximumSize()
{
return getSize();
}

public Dimension getMinimumSize()
{
return getSize();
}
}
 
Reply With Quote
 
 
 
 
Eric Sosman
Guest
Posts: n/a
 
      10-05-2007
Mark Space wrote:
> Hey all, here's a problem I can't lick.
> [...]
> I implement all the size methods, [...]


Are you sure?

> [...]
> public Dimension getPerferredSize()

^^

Are you *really* sure?

--
Eric Sosman
http://www.velocityreviews.com/forums/(E-Mail Removed)lid
 
Reply With Quote
 
 
 
 
Mark Space
Guest
Posts: n/a
 
      10-05-2007
Eric Sosman wrote:
> Mark Space wrote:
>> Hey all, here's a problem I can't lick.
>> [...]
>> I implement all the size methods, [...]

>
> Are you sure?
>
> > [...]
>> public Dimension getPerferredSize()

> ^^
>
> Are you *really* sure?
>


Thanks man. Sometimes I just need a second pair of eyes...
 
Reply With Quote
 
Stefan Ram
Guest
Posts: n/a
 
      10-05-2007
Mark Space <(E-Mail Removed)> writes:
>>> public Dimension getPerferredSize()

>> ^^
>> Are you *really* sure?

>Thanks man. Sometimes I just need a second pair of eyes...


Try

http://download.java.net/jdk7/docs/a.../Override.html

 
Reply With Quote
 
Mark Space
Guest
Posts: n/a
 
      10-05-2007
Stefan Ram wrote:
> Mark Space <(E-Mail Removed)> writes:
>>>> public Dimension getPerferredSize()
>>> ^^
>>> Are you *really* sure?

>> Thanks man. Sometimes I just need a second pair of eyes...

>
> Try
>
> http://download.java.net/jdk7/docs/a.../Override.html
>


That's a good idea too. But because it was such a short little program,
I skipped them. Sometimes skipping the fundamentals just doesn't pay.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How Can I Get One JFrame To Appear Above Another JFrame clusardi2k@aol.com Java 2 08-27-2012 03:01 PM
start a new JFrame from an existing one, and when old JFrame closes new one does not jakester Java 3 04-02-2007 11:13 PM
Choosing Layout: Css-Layout or Table-Layout hpourfard@gmail.com ASP .Net 1 06-19-2006 10:06 AM



Advertisments