Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

setting size of JComboBox

2,092 views
Skip to first unread message

Brandon McCombs

unread,
Jan 28, 2007, 4:36:39 AM1/28/07
to
Has anyone ever had issues with setting the preferred size of a
JComboBox using GridBagLayout? It seems the box's height is larger than
the JTextField's height that I create in the same window. I can
change the height of the JTextFields by using setPreferredSize() to
match the JComboBox so everything is uniform but that's only because I
can't decrease the JComboBox's height because it seems to ignore that
call. Any ideas?


thanks
Brandon

Knute Johnson

unread,
Jan 28, 2007, 1:01:48 PM1/28/07
to

Set the fill element on the GridBagConstraints for the JTextField.

--

Knute Johnson
email s/nospam/knute/

Brandon McCombs

unread,
Jan 28, 2007, 2:43:50 PM1/28/07
to

Won't that make the JTextField match the size of the JComboBox? I want
the JComboBox to match the size of the JTextField (JComboBox has the
larger height due to the button for the dropdown box) which doesn't work
at the moment because it ignores the setPreferredSize() call.

Knute Johnson

unread,
Apr 27, 2011, 11:29:45 AM4/27/11
to
To: comp.lang.java.gui

JComboBoxes have a preferred size that is larger than a JTextField.
GridBagLayout uses only preferred size, not minimum size. So if you
really want to make the JComboBox smaller then you will have to do some
tricks. Set the minimum size to 1,1 and reset the preferred size to
match the height of the JTextField. I think I would just let my
JTextField get bigger to match the JComboBox but it does appear to work.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test extends JFrame {
String[] array = {"one","two","three"};

public test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridBagLayout());

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(2,2,2,2);

JComboBox cb = new JComboBox(array);
JTextField tf = new JTextField("test");

System.out.println(cb.getMinimumSize());
System.out.println(cb.getPreferredSize());
System.out.println(tf.getPreferredSize());

cb.setMinimumSize(new Dimension(1,1));
cb.setPreferredSize(new Dimension(cb.getPreferredSize().width,
tf.getPreferredSize().height));

add(cb,c);
add(tf,c);

pack();
setVisible(true);

System.out.println(cb.getSize());
System.out.println(cb.getPreferredSize());
}

public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
new test();
}
};
EventQueue.invokeLater(r);
}
}

--

Knute Johnson
email s/nospam/knute/

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

Brandon McCombs

unread,
Jan 28, 2007, 5:51:08 PM1/28/07
to

thanks. I got it to work by doing that. I had tried to set the size
before but couldn't get it to work. I'm not sure what the difference
between your code and my previous code. By the way, I was able to leave
out the setMinimumSize() call.

0 new messages