I have created a jComboBox but it takes the full width of the frame. how to set the width fixed.
yes borderlayout for the frame and box layout for the panel. i am adding the code here:
import javax.swing.*;
import java.awt.BorderLayout;
public class Window8 {
JFrame frame;
JPanel panel;
JComboBox combo;
public void go(){
String[] option = { "STUDENT", "TEACHER" };
combo.setPreferredSize(new Dimension(1,25));
combo = new JComboBox(option);
menu.setSelectedIndex(0);
frame = new JFrame("DELETION");
frame.setLocationRelativeTo(null);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
frame.getContentPane().add(BorderLayout.NORTH,panel);
panel.add(combo);
}
The width is automatically determined by the width of the largest item added to the combo box. You can control the display by using:
comboBox.setPrototypeDisplayValue("text here");
You might also consider using the Combo Box Popup to control the popup size.
Edit:
Since you added code that shows you are using a BoxLayout you can try the following:
comboBox.setMaximumSize( comboBox.getPreferredSize() );
Or you can do something like:
JPanel wrapper = new JPanel();
wrapper.add( comboBox );
panel.add( wrapper );
Read the section from the Swing tutorial on Using Layout Managers to understand how these suggestions work.