我有一個Swing窗體,它包含一個JPanel的JScrollPane(activityScrollPane
)(activityPanel
)。該面板包含一個JTextField和一個JButton(用於向面板添加更多字段)。現在的問題是,元素從面板的中心開始,如下圖(標有邊界標誌着activityScrollPane
邊界)是否可以使用GridBagLayout使JPanel內的元素從左上角開始?
以下是我目前正在使用,使滾動窗格中的代碼和相關的組件。
//part of the code for creating the ScrollPane
final JPanel activityPanel = new JPanel(new GridBagLayout());
gbc.gridx=0;
gbc.gridy=0;
JScrollPane activityScrollPane = new JScrollPane(activityPanel);
//adding activity fields
activityFields = new ArrayList<JTextField>();
fieldIndex = 0;
activityFields.add(new JTextField(30));
final GridBagConstraints activityGBC = new GridBagConstraints();
activityGBC.gridx=0;
activityGBC.gridy=0;
activityGBC.anchor = GridBagConstraints.FIRST_LINE_START;
activityPanel.add(activityFields.get(fieldIndex),activityGBC);
fieldIndex++;
JButton btn_more = (new JButton("more"));
activityGBC.gridx=1;
activityPanel.add(btn_more,activityGBC);
如何讓JTextField的和將JButton或與此有關的任何組件出現在JScrollPane中的左上角。使用
activityConstraints.anchor = GridBagConstraints.NORTHWEST;
如指出的SO post我已經試過了,但它並沒有在所有似乎工作。
它適用於第一個領域。但是當我嘗試添加更多JTextField時,它們在整個高度上均勻分佈。有沒有辦法來防止這種情況呢? – Ankit
@Ankit:太簡單了,只要評論這行'gbc.weighty = 1.0',雖然保持'weightx'的值如下:-),請回復,如果你想要別的東西,我不明白: - ) –
使它從上面開始的第一部分是好的。但事情是,如果我使用'weighty',那麼它會從頂部開始,但是當我添加更多的字段時,它們不會從前一個字段的下面開始。相反,它始於中心。我想我正在使用錯誤的佈局。 – Ankit