2013-02-14 92 views
0

我有一個JFrame,其中我有兩個JPanel實例。我使用repaint()繪製框架。但問題是我想爲兩個不同的面板提供兩個不同的repaint()試圖重新繪製不同的JPanels

Jpanel panel = new JPanel(); 
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 
panel.add(image1); //image1 and image2 is of its own class type. 
panel.add(image2); 
frame.add(panel,BorderLayout.CENTER); 

frame.pack(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setSize((int)width*2, (int)height); 
frame.setVisible(true); 

frame.repaint(); 

我知道,我還沒有在JPanel使用repaint(),...本幫助還..我用這個了最低工作。

我們可以,只需repaint()上某JPanel

+1

'的JPanel面板=新JPanel()繼承repaint;'這將無法編譯。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-02-14 05:13:09

+0

不要使用'setSize'而是重寫'JPanel'' getPreferredSize()'並返回適合被繪製到'Graphic's對象內容的Dimension。 – 2013-02-14 13:34:51

回答

3

JFrame#repaint將重新繪製整個幀和它的內容。

JPanel#repaint將重新繪製面板的實例,它是孩子。

這將爲所有部件工作,因爲他們從Component

+0

是的..但我有兩個不同的面板,無論如何要在兩個不同的面板上繪製不同的東西...因爲我們只有一個重繪()函數... – 2013-02-14 05:12:56

+2

每個面板都有重繪方法。如果你想繪製一個面板,我建議你看看[自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/) – MadProgrammer 2013-02-14 05:14:46

+0

謝謝...猜這個鏈接應該幫我。 – 2013-02-14 05:17:09