I have developed a graphical interface extended from java.awt.Component. It
is drawn using Graphics2D objects, and is nicely interactive.
When the interface is placed in a JPanel, which is placed in a JFrame,
everything works great. My interface checks the its size, and calculates
the size & placement of all the internal stuff.
However, when you try to put anything else in the JFrame or JPanel, my
component gets shrunk to a point, and isn't displayed.
How can I make a component's default behavior to be to expand to fill all
available space?
Component.setPreferredSize(new Dimension(Integer.MAX_VALUE,
Integer.MAX_VALUE));
Any suggestions are appreciated,
Rob
Chris Smith - 31 Oct 2005 16:29 GMT
> I have developed a graphical interface extended from java.awt.Component. It
> is drawn using Graphics2D objects, and is nicely interactive.
[quoted text clipped - 8 lines]
> How can I make a component's default behavior to be to expand to fill all
> available space?
This isn't about the component, but rather about the layout manager in
the container. What layout manager are you using for the JFrame's
content pane? How about for the JPanel?

Signature
www.designacourse.com
The Easiest Way To Train Anyone... Anywhere.
Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
Rob McDonald - 31 Oct 2005 16:38 GMT
> This isn't about the component, but rather about the layout manager in
> the container. What layout manager are you using for the JFrame's
> content pane? How about for the JPanel?
I do something like this...
final JFrame frame = new JFrame("My Frame");
final JPanel mainPane = new JPanel();
mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.PAGE_AXIS));
frame.getContentPane().add(mainPane, BorderLayout.CENTER);
MyComponent myComp = new MyComponent();
mainPane.add(myComp);
JTextField textF = new JTextField(10);
mainPane.add(textF);
And I get a giant JTextField, with a non-existant MyComponent. If I force
the textF.setSize(100,15); I get a small JTextField, and a speck that I
assume is supposed to be the MyComponent.
I also tried a FlowLayout() instead of the BoxLayout(), without any
significant change in behavior.
Rob
Andrey Kuznetsov - 31 Oct 2005 16:46 GMT
> I also tried a FlowLayout() instead of the BoxLayout(), without any
> significant change in behavior.
try BorderLayout

Signature
Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities
Andrey Kuznetsov - 31 Oct 2005 16:44 GMT
> When the interface is placed in a JPanel, which is placed in a JFrame,
> everything works great. My interface checks the its size, and calculates
> the size & placement of all the internal stuff.
your interface should also tell his parent his preferred size (*not*
Integer.MAX_VALUE!)
see
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Component.html#getPreferredSize()

Signature
Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities