2014-02-26 98 views
0

我編譯了以前的代碼後,它的工作,但現在我不能得到的圓周圍改變爲圓內的什麼不同的顏色。有什麼建議麼。100隨機圈

public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     Dimension d = getSize(); 
     for(int i = 0; i < 100; ++i) 
     {       
      Color color = new Color(generator.nextInt(255), generator.nextInt(255), generator.nextInt(255)); 
      g.setColor(color); 

      int circleSize = generator.nextInt(d.width/4); 
      int x = generator.nextInt(d.width - circleSize); 
      int y = generator.nextInt(d.height - circleSize); 
      g.fillOval(x, y, circleSize, circleSize); 

      color = new Color(generator.nextInt(255), generator.nextInt(255), generator.nextInt(255)); 
      g.setColor(color);    
      g.drawArc(x, y, circleSize, circleSize, 0, 360); 
     } 

    } 
} 
+0

我會避免包裝,如果我有一定的大小,裏面沒有東西。 – Tomas

+0

它似乎運行,因爲它應該在這裏。適當的尺寸,大量的圈子和黑色的背景。唯一沒有編譯的是你的第二個導入,'javax.swing.JPanel *;'。我刪除了該行,並且一切正常。你修改了你在這裏寫的代碼嗎? – afsantos

+0

我已經刪除了該導入行並嘗試了它,沒有發生任何事情。所以我也嘗試改變揹包,但仍然沒有任何東西..我現在無語了。 –

回答

0

只需在包裝框架之前添加frame.setPreferredSize(new Dimension (700,500));即可。這兩種方法意在一起使用。另外,在設置大小之後,將JPanel添加到該代碼中,這樣可以提高代碼的可讀性,並且在考慮語句的順序時更有意義。

public static void main (String[] args) 
{ 
JFrame frame = new JFrame ("CircleFrame"); 
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

CircleFramePanel panel = new CircleFramePanel(); 

frame.setPreferredSize(new Dimension (700,500)); // add it here 

frame.pack(); 

frame.getContentPane().add(panel); 

frame.setVisible(true); 
} 
+0

考慮到已添加到框架的面板具有其首選大小設置的事實,這是毫無意義的,無論如何,您應該允許框架的大小爲其內容的首選大小,因爲這會自動包含邊框插頁的框架裝飾... – MadProgrammer