JComboBoxを作成しましたが、フレームの幅全体を占めます。固定幅の設定方法。
フレームのボーダーレイアウトとパネルのボックスレイアウト。ここにコードを追加しています:
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);
}
幅は、コンボボックスに追加された最大のアイテムの幅によって自動的に決定されます。以下を使用して表示を制御できます。
comboBox.setPrototypeDisplayValue("text here");
コンボボックスポップアップ を使用してポップアップサイズを制御することも検討してください。
編集:
BoxLayoutを使用していることを示すコードを追加したので、次のことを試すことができます。
comboBox.setMaximumSize( comboBox.getPreferredSize() );
または、次のようにすることもできます。
JPanel wrapper = new JPanel();
wrapper.add( comboBox );
panel.add( wrapper );
Swingチュートリアルの sing Layout Managers のセクションを読んで、これらの提案がどのように機能するかを理解してください。
comboBox.setPreferredWidth(200);を試してください。または幅を設定するその他の値
jzdは正しいです。実際のAPIはsetPreferredSize(new Dimension(...));
です
setSize()
メソッドを使用することもできます。
combo.setSize(200, combo.getPreferredSize().height);
これがボックスレイアウトでできることです。
。以下のコードスニペット:
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
panel.add(Box.createHorizontalGlue());
panel.add(Box.createRigidArea(new Dimension(10, 0)));
panel.add(combo);
frame.getContentPane().add(BorderLayout.NORTH, panel);
別のLayoutManagerを使用します。 FlowLayout
をお試しください。