2012-02-06 39 views
2

我基本上想要將一個300×300的JFrame窗口分割成30個正方形(不需要單獨繪製它們),並且能夠訪問每個正方形(可以將它們放入數組/列表/堆棧/矢量/等等)。這可能沒有寫drawRect(x,y,寬度,高度)30次?提前致謝。在Java JFrame中繪製多個方塊並訪問它們中的每一個?

+0

除了有每平方對象引用(所以你可以把它們變成一些館藏結構),你想要什麼用的箱子呢?他們是否有需要畫到畫布上的內容?他們是「JComponent」嗎?你想使用類似'JList','JTable'的渲染方式嗎? – 2012-02-06 17:07:31

回答

2

你可以保持在一個ArrayList您的組件,並得到使用網格佈局 和下面的代碼片段:

getContentPane.setLayout(new GridLayout(x,y)); 

其中x和y分別表示行數和列數。 之後,您可以添加組件到您的JFrame對象的內容。

示例代碼:

import java.awt.Color; 
import java.awt.Container; 
import java.awt.GridLayout; 
import java.awt.Window; 
import java.util.ArrayList; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class MyFrame extends JFrame 
{ 
    public static void main (String [] args) 
    { 
     MyFrame myframe = new MyFrame(); 
     myframe.setSize(300, 300); 
     myframe.setResizable(false); 
     myframe.setLocationRelativeTo(null); 
     myframe.setLayout(new GridLayout(3,3)); 

     Container container = myframe.getContentPane(); 
     ArrayList <JPanel> components = new ArrayList <JPanel>(); 
     JPanel temp = null; 

     // Populating Arraylist object. 
     for (int i = 0; i < 9; i++) 
     { 
      temp = new JPanel(); 
      temp.setSize(100,100); 
      components.add(temp); 
      container.add(temp); 
     } 

     myframe.pack(); 
     myframe.setVisible(true); 

     // Accessing components via index. 
     components.get(5).setBackground(Color.BLUE); 
     components.get(8).setBackground(Color.GREEN); 
    } 
} 
2

爲什麼不走了JTable中,而不是這個?

相關問題