2013-10-12 39 views
1

我有一個矩形,我沿着JPanel使用repaint()移動。當矩形的位置到達JPanel外部的位置時,它不再可見。我怎樣才能讓它在JPanel之外可見?使JPanel中的圖形可見外部JPanel

這是我的paint方法:

public void paintComponent (Graphics g) { 
    g.setColor(Color.red); 
    g.fillRect(dist, 0, 10, 10); 
    dist++; 
} 

更新:

我有我使用的GridBagLayout放置在JFrame的多個JPanels。 JPanels代表街道中的車道和長方形汽車。讓JPanel外部可見的矩形的原因是讓汽車改變車道。 JPanel似乎適合我,設置了汽車的第一個位置。

這個問題有更好的解決方案嗎?

+1

無關:**請勿在繪畫時更改組件的狀態... – kleopatra

回答

2

幽州:

我有我使用重繪沿JPanel中移動()的矩形。當矩形的位置到達JPanel外部的位置時,它不再可見。我怎樣才能讓它在JPanel之外可見?

如果JPanel正在繪製它,簡短答案是:「你不行」。

較長的答案將取決於您試圖繪製JPanel的位置以及GUI的其餘部分如何設置。


編輯
您現在的狀態:

我有我使用的GridBagLayout放置在JFrame的多個JPanels。 JPanels代表街道中的車道和長方形汽車。讓JPanel外部可見的矩形的原因是讓汽車改變車道。 JPanel似乎適合我,設置了汽車的第一個位置。

如果我編寫你在做它的方式,我不會有這些地方JPanels畫汽車,而是將有車是自己的精靈,從街頭不同的層上存在,也許使用JLayeredPane的。它可以存在於它自己的包含整個地圖的JPanel中,只要這個JPanel不是不透明的。然後,您可以按照您喜歡的方式移動汽車。

+0

我添加了有關gui的其他部分的詳細信息 – flec

+0

@flec:請參閱編輯。 –

2

如前所述,你不能但如果你想佔用更大的面積,你應該使JPanel變大或將paintComponent放在父組件中。