2011-01-07 12 views
11

jComboBoxを作成しましたが、フレームの全幅が必要です。固定幅の設定方法。JComboBoxの幅

はいパネルのフレームとボックスレイアウトのborderlayoutです。私はここにコードを追加しています:

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); 
} 
+0

レイアウトを使用していますか? –

+0

私のコードを追加しました。それを見てください。 –

+0

再フォーマットされたコード。コピーされた;間違っている場合は元に戻してください。 – trashgod

答えて

16

幅はコンボボックスに追加された最大アイテムの幅によって自動的に決まります。あなたは使って表示を制御することができます:あなたはまた、ポップアップの大きさを制御するためにCombo Box Popupを使用して検討するかもしれない

comboBox.setPrototypeDisplayValue("text here"); 

編集:

あなたはBoxLayoutを使用している示したコードを追加しているので、あなたが次のことを試すことができます。

comboBox.setMaximumSize(comboBox.getPreferredSize()); 

それとも、のような何かを行うことができます:

JPanel wrapper = new JPanel(); 
wrapper.add(comboBox); 
panel.add(wrapper); 

写真ザSwingチュートリアルUsing Layout Managersのセクションを参照して、これらの提案の仕組みを理解してください。

+0

'setPrototypeDisplayValue'を機密オプションで使うと、JComboBoxのサイズを適切に変更し、コンテナの定義に従って異なるサイズにすることができます。ありがとう! – Alfabravo

4

try comboBox.setPreferredWidth(200);または幅を設定するための他の値

jzdが正しいです。実際のAPIはsetPreferredSize(new Dimension(...));

+0

私は試しましたが、このエラーが発生します。 "setPreferredWidth(int)型がJComboBox型のために定義されていない" –

+1

APIを見ると、正確なメソッドは次のようになります:setPreferredSize(Dimension preferredSize) – jzd

+0

しかし、幅を設定するコードは何ですか? –

1

です。別のLayoutManagerを使用してください。試してくださいFlowLayout

+0

と答えてください。しかし、幅を設定するコードは何ですか?答えは –

+0

です。幅は内容に基づいて自動的に決定されるか、setPreferredSize()またはcamickrの提案を使用します。しかし、あなたがそれを伸ばすレイアウトに置くなら、それは重要ではありません。 – jzd

0

ここでは、ボックスレイアウトでできることがあります。線軸に

  • 変更軸、硬質領域を追加し、
  • 水平接着剤を追加し、
  • 場所成分

。以下 コードスニペット:

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); 
2

をあなたはsetSize()メソッドを使用する場合があります。

combo.setSize(200, combo.getPreferredSize().height);