2010-12-03 99 views
2

我有一個通過JPanel中的GridLayout佈局的對象數組。我需要能夠在數組中的索引中重新創建對象,並通過GridLayout更新來反映這一點。到目前爲止,我仍然無法找到「刷新」或重繪GridLayout。是否可以在不創建整個GridLayout或JPanel的情況下刷新GridLayout?假設我沒有訪問JFrame的權限。在GridLayout中更新網格

import javax.swing.*; 
import java.awt.*; 

public class Test 
{ 
    public static void main(String args[]) 
    { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(); 

     panel.setLayout(new GridLayout(5,5)); 

     JLabel[][] labels = new JLabel[5][5]; 
     for (int i = 0; i < 5; i++) 
     { 
      for (int j = 0; j < 5; j++) 
      { 
       labels[j][i] = new JLabel("("+j+", "+i+")"); 
       panel.add(labels[j][i]); 
      } 
     } 

     labels[0][0] = new JLabel("Hello World"); 

     //Without doing it this way (cause my objects can't do this) 
     //labels[0][0].setText("Hello World!"); 

     frame.add(panel); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.pack(); 
     frame.setResizable(false); 
     frame.setVisible(true); 
    } 
} 

回答

6

我不明白你爲什麼不能更新標籤上的文字。

爲什麼你需要「重新創建對象」?這個不成立。但如果你真的需要這樣做,那麼代碼會是這樣的:

panel.remove(0); 
panel.add(theNewLabel, 0); 
panel.revalidate(); 
panel.repaint();