मेरे पास एक फ्रेम के अंदर एक जेपीनल है। जेपीनेल की सामग्री प्रत्येक कॉल के साथ paintComponent
(जिसे repaint()
द्वारा बुलाया जाता है) के साथ अद्यतन किया जाना चाहिए, लेकिन जब मैं इसे नीचे करता हूं, तो मुझे बस एक सफेद खिड़की दिखाई देती है। (कृपया घायल खरोज बहाना, ग्रहण टैब के साथ अजीब सामान के सभी प्रकार है।)फ्रेम के अंदर एक जेपीनल को दोबारा लगाने के लिए
private static void handleGUI()
{
JFrame frame = new JFrame("Animation");
frame.setPreferredSize(new Dimension(100, 100));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Board b = new Board();
frame.getContentPane().add(b);
frame.pack();
frame.setVisible(true);
while(true)
{
System.out.println("Repainting panel");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
b.repaint();
}
}
public class Board extends JPanel
{
public Board() { t=0; }
private int t;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
++t;
/* Variables snipped */
g.setColor(Color.white);
g.drawOval(0, 0, width, height);
BufferedImage image = ImageIO.read(new File(imagePath));
g.drawImage(image, x(t), y(t));
/* There's some more image and rectangle drawing ahead */
}
}
असल में, ग्रहण टैब के साथ सभी प्रकार की अच्छी चीजें करता है। :-) अपने स्रोत को स्वचालित रूप से प्रारूपित करने के लिए बस CTRL-SHIFT-F दबाएं। यह आपके लिए एक सतत स्वरूपण और इंडेंटेशन का उत्पादन करेगा, जो आपको स्वयं करने के बोझ से मुक्त करेगा। – harschware
एक्स (0), वाई (0) के लिए मूल्य क्या हैं? छवि आपके पैनल के बाहर हो सकती है। क्या आप इसे डीबगर में चलाते हैं? अगर आपकी छवि नहीं मिली है तो कोड जीयूआई थ्रेड में अपवाद फेंक सकता है। – josefx