嗨我一直在嘗試通過改變我提出的mandelbrot集的程序來攪亂Java GUI,但是當我在paint方法中放置if語句時,它會使圖像在屏幕,然後抹去黑屏。Java Paint方法閃爍並消失
這是我的paint方法:
public void paintComponent(Graphics g)
{
if (clicked == false && count == 0)
{
drawMandelbrot(g); //sends graphics object to the method that draws the Mandelbrot set
clicked = !clicked;
}
zoom(g);
repaint();
}
public void zoom(Graphics g)
{
if (count > 0 && clicked == false)
{
g.setColor(Color.white);
g.fillRect(0,0, 400, 400);
clicked = !clicked;
}
}
我知道,因爲它的工作之前有提錯的drawMandelbrot()函數,並且我知道,它不應該是因爲計數變焦()函數僅在mousePressed時增加。
有什麼想法?我嘗試過評論這麼多部分,有時會留在屏幕上,但我再次運行它,但沒有。 Swing/AWT這個不可靠嗎?
UPDATE:
我想通了,這個問題曾與設置背景顏色做。我在主函數中設置了框架的背景顏色,但由於某種原因(我仍然不知道)在繪製圖像之後,它將背景顏色再次設置在其上。
public Mandelbrot (int w, int h) //constructor method that is only utilized to bring in the size of the screen
{
this.setBackground(Color.BLACK);
addMouseListener(this);
clicked = false;
count = 0;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (clicked == false && count == 0)
{
drawMandelbrot(g); //sends graphics object to the method that draws the Mandelbrot set
clicked = !clicked;
}
zoom(g);
}
public void zoom(Graphics g)
{
if (count > 0 && clicked == false)
{
}
}
public void mouseReleased(MouseEvent e)
{
zoomX = e.getX();
count ++;
clicked = !clicked;
repaint();
System.out.print(clicked);
}
更新2: 它仍然不能正常工作,它的工作是第一次,但我試圖再次運行它,同樣的事情發生以前一樣,它採用了黑色邊框結束。
是不是paintComponent()更新`clicked`變量使得zoom()中的檢查不會觸發? – 2011-02-05 21:32:48
看到paintComponent()方法中的repaint()調用會傷害我的眼睛,如果JVM不智能,會導致不停的遞歸。爲什麼試圖在那裏調用這個方法? – 2011-02-05 22:54:01