我想繪製圓圈到JFrame與不同的位置,在這種情況下在網格狀模式。將多個圓圈添加到JFrame? (Java)
我似乎沒有麻煩畫出一個單一的圓,X,Y的位置,但是,當我試圖繪製多個不同位置的圓圈,其他圓圈的位置被遮蔽。
在下面的代碼中,我有兩個數組:XPlacements和YPlacements,它們包含不同的X和Y位置以形成一個網格。對於每個X位置,應該在該X位置處創建具有變化的Y位置的圓圈(反之亦然)。
當我只讓下面的代碼繪製一個圓圈,其中XPlacements = {10} YPlacements = {100},它會繪製一個看起來像在左上方一些(10,100)的圓。同樣,當我添加多個X位置而只有一個Y位置時,似乎沒有任何東西被遮擋。但是,當我添加多個Y位置時,每個下降的圓圈似乎越來越向右推動。 當我運行它,它掩蓋這樣的:http://imgur.com/HHjhvPD
我似乎無法使它不那麼通過改變JFrame的價值觀模糊。我能找到的所有JFrame圈子教程只處理1個圈子,當我使用1圈(或只有1圈圈子)時,我沒有任何問題。
有誰知道爲什麼下面的代碼不會產生類似於網格的網格?
謝謝。這一切
public class Circle extends Canvas {
int XPos;
int YPos;
public void SetPosition(int x, int y) {
this.XPos = x;
this.YPos = y;
repaint();
}
public void paint(Graphics g) {
System.out.println("Filling oval with position ("+XPos+","+YPos+")");
g.fillOval(XPos, YPos, 15, 15);
}
}
public class MainFile extends JFrame {
static int[] XPlacements = {10,20,30};
static int[] YPlacements = {100,200,300};
static Circle[] Circles = new Circle[1000];
static int Circle_Count = 0;
public static void main(String[] args) {
JFrame frame = new JFrame("Grid of circles");
frame.setLayout(new GridLayout(1,1));
frame.setSize(800, 800);
for(int x=0;x<XPlacements.length;x++) {
for(int y=0;y<YPlacements.length;y++) {
System.out.println("Creating new circle "+Circle_Count+" with position "+XPlacements[x]+","+YPlacements[y]);
Circles[Circle_Count] = new Circle();
Circles[Circle_Count].SetPosition(XPlacements[x],YPlacements[y]);
frame.add(Circles[Circle_Count]);
Circle_Count++;
}
}
frame.setVisible(true);
}
}
嘗試'新的GridLayout(YPlacements.length,XPlacements.length)' – Berger
在這種簡單的情況下使用數組等等的含義是什麼?您可以使用單個組件變量: 它只會有一個意義,如果你需要保持每個添加組件的不同名稱,以便您可以單獨刪除它們中的任何一個... –
Apostolos