2013-02-14 86 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