2011-06-22 47 views
0

JTextFieldのサイズ

campoSensorは次のように定義されて
GridBagConstraints constPanelInfo = new GridBagConstraints(); 
    panelInfo = new JPanel(new GridBagLayout()); 
    JLabel sensor1 = new JLabel("Sensor: "); 
    constPanelInfo.gridx = 0; 
    constPanelInfo.gridy = 0; 
    constPanelInfo.weightx = 0.0; 
    constPanelInfo.fill = GridBagConstraints.NONE; 
    panelInfo.add(sensor1, constPanelInfo); 
    constPanelInfo.gridx = 1; 
    constPanelInfo.gridy = 0; 
    constPanelInfo.weightx = 1.0; 
    constPanelInfo.fill = GridBagConstraints.HORIZONTAL; 
    campoSensor.setPreferredSize(new Dimension(100, campoSensor.getPreferredSize().height)); 
    panelInfo.add(campoSensor, constPanelInfo); 

private JTextField campoSensor = new JTextField(); 

...しかし、私は好きなのJTextFieldが100ピクセルの重みにスケーリングされていません。それはsetPreferredSizeメソッドを書き込む前のサイズと同じです。ここにどんなアイデア?

+3

このJTextField(int列)コンストラクタを使用する方が、 。 –

+0

'panelInfo'を' JFrame'または 'JDialog'に追加するコードの部分を表示できますか?そのフレームやダイアログで 'pack()'を呼びましたか? – jfpoilpret

答えて

0

がうまくいけば、これはあなたが探しているものです...指定100pxにでそれを維持する必要があり、センサのための

constPanelInfo.weightx = 0; 

を設定します。すなわち、すべての重みがゼロである場合、セルのグリッドと左右のエッジとの間に余分なスペースがすべて現れる。

weigthsが設定されている場合と理由

constPanelInfo.fill = GridBagConstraints.HORIZONTAL; 

のcampoSensorに関係なく推奨サイズのセルの全幅を埋めるために起こっていることを覚えておいてください。 この幅は、あなたのパネルが座っているJFrameのサイズによって決まるでしょう。

+0

また、ここには良い情報があります。http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html – Steve

+0

JTextFieldのサイズが変更されました。それにもかかわらず、それは次のようになります: ボーダーセンサー:...... ... JTextField ... .... - BORDER どうすればこれらのスペースを削除できますか? –

0

好ましいサイズを設定する代わりにconstPanelInfo.iPadX=100;に設定してください。

+0

が100ピクセル大きくなっても動作しません –