2011-06-22 72 views
0

我有一個JPanel是這樣的:JTextField的大小

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

其中campoSensor被定義爲:

private JTextField campoSensor = new JTextField(); 

...但我想JTextField是沒有擴展到100像素重量:它保持它在寫入setPreferredSize方法之前的大小。這裏有什麼想法?

+3

使用JTextField(int columns)構造函數會比假設您可以猜測此GUI元素的寬度應該更好。 –

+0

您可以顯示將'panelInfo'添加到'JFrame'或'JDialog'的代碼部分嗎?你是否在該框架或對話框中調用'pack()'? – jfpoilpret

回答

0

希望這是你在找什麼......對於傳感器設置

constPanelInfo.weightx = 0; 

應保持在規定的100像素。即,如果所有權重都爲零,則所有額外空間出現在單元格的網格和左右邊緣之間。

記住,由於如果weigths被設置並且

constPanelInfo.fill = GridBagConstraints.HORIZONTAL; 

的campoSensor將填滿的小區的全寬而不管優選尺寸。 此寬度可能取決於您的面板所在的JFrame的大小。

+0

另外,這裏有很好的信息:http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html – Steve

+0

JTextField現在已經調整大小。然而,它看起來像: BORDER - SENSOR:...... ... JTextField ... .... - BORDER 如何刪除這些空格? –

0

嘗試設置constPanelInfo.iPadX=100;而不是設置首選大小。

+0

得到100px更大,不起作用 –

相關問題