2014-01-24 36 views
0

是否有可能在不通過另一個gridbaglayout的情況下從actionperformed編輯gridbaglayout中的項目的x和y?對不起,如果這是一個愚蠢的問題,但我是新來的Java。Java GridBagLayout從actionperformed編輯x和y

public void actionPerformed(ActionEvent e){ 
    for (int i = 0; i < 8; i++){ 
     if (e.getSource() == buttons[i]){ 
      gbc.gridx = xNow; 
      gbc.gridy = yNow; 
     } 
    } 
} 

回答

2

首先您應該瞭解GridBagConstraints背後的概念。舉一個例子,

首先,我們可以定義爲GridBagLayout中這樣

panelNote = new JPanel(new GridBagLayout()); 

面板,那麼你可以定義爲在該面板組件網格包約束。在這種情況下,首先我們必須定義gridbag約束。

GridBagConstraints panelNoteConstraints = new GridBagConstraints(you can define constraints here); 

然後,我們添加項目是這樣的:panelNote.add(getVisitPanel(), panelNoteConstraints);

現在想來,發揮重要的事情,如果想將其他組件添加到面板上。然後,你可以通過兩種方式定義網格包約束

  1. 定義新的網格包約束像我們以前一樣或
  2. 編輯panelNoteConstraints像:

panelNoteConstraints.gridx = 0; panelNoteConstraints.gridy = 1;

重要的是,這些結果兩種方法是相同的。因爲在兩種方式中,您所做的是在GridBagLaout中編輯常量值。那麼簡單的答案就是你不想這樣做。但是如果你想編輯一個組件的位置,那麼revalidate()repaint()方法會很有幫助。