2016-04-29 5 views
6

काम नहीं कर रहा है मैं खुद को जावा सिखाने के लिए एक हैंगमन गेम बना रहा हूं। मुझे फ्रेम के मुख्य भाग में मिला है।जावा हैंगमन गेम पेंटेंट()

this.add(new PaintSurface(), BorderLayout.CENTER); 

मुझे मिल गया है:

private class PaintSurface extends JComponent { 
    Shape found = null; 

    public PaintSurface(){ 
     JOptionPane.showMessageDialog(null, "Repainting"); 
     Shape s; 
     msgbox("LL: " + intLivesLost); 
     switch(intLivesLost){ 
     //draw the Hanged man 
     case 10: 
      //Face + KILL 
     case 9: 
      //2nd Arm 
     case 8: 
      //1st Arm 
     case 7: 
      //2nd Leg 
     case 6: 
      //1st Leg 
     case 5: 
      //Body 
     case 4: 
      //Head 
      shapes.add(s); 
     case 3: 
      //Horizontal Bar 
      s = new Line2D.Float(100, 450, 250, 450); 
      shapes.add(s); 
      //Rope 
      s = new Line2D.Float(250, 450, 250, 500); 
      shapes.add(s); 
     case 2: 
      //Vertical Bar 
      s = new Line2D.Float(100, 450, 100, 670); 
      shapes.add(s); 
     case 1: 
      //Stand 
      s = new Line2D.Float(40, 670, 460, 670); 
      shapes.add(s); 
      break; 
     default: 
      break;   
     } 
    } 

    public void paint(Graphics g) { 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     g2.setStroke(new BasicStroke(4)); 
     g2.setColor(Color.BLACK); 

     for (Shape count : shapes){ 
      g2.draw(count); 
     } 
    } 
} 

और मैं उपयोग कर रहा हूँ:

repaint(); 

... परियोजना के दौरान प्रत्येक समय सीमा अद्यतन किया जाता है, नए पत्र अनुमान लगाया, गलत अनुमान, नया खेल।

जब एप्लिकेशन पहले जॉप्शनपेन चलाता है। शो मैसेज डियालॉग (शून्य, "पुनर्भुगतान"); पॉप अप, तो मुझे पता है कि इसे तब कहा जाता है। उसके बाद, "पुनर्भुगतान" पॉप अप अब और प्रकट नहीं होता है, इसलिए मुझे पता है कि पश्चाताप(); कॉल कुछ भी नहीं कर रहे हैं। मुझे पता है कि कोड repaint() के लिए हो रहा है; कॉल, जैसा कि मैंने पहले और बाद में एक जॉप्शनपेन.शोमेसेज डायलॉग लगाया था।

मैं कोई भाग्य के साथ की कोशिश की है:

removeAll();
पुनरीक्षण();
getContentPane()। Repaint();

इसके लिए किसी भी संकेत और सुझावों की बहुत सराहना की जाएगी।

संपादित करें: मैंने इसे "पेंट" में कोड डालने की सलाह दी है, ऐसा लगता है कि यह पहले से था, और यह अभी भी काम नहीं कर रहा है। हालांकि धन्यवाद।

+0

"सार्वजनिक पेंटसुरफेस() {...}" पेंटसुरफेस वर्ग का निर्माता है। यह केवल तब कहा जाता है जब पेंटसुरफेस "नया पेंटसुरफेस()" के साथ बनाया जाता है। आकार वस्तु बनाने के लिए आपका तर्क कहीं और जगह होना चाहिए (शायद पेंट विधि, लेकिन मुझे यकीन नहीं है कि यह एक जवाब नहीं है;)) –

उत्तर

0

मैंने इसे हल किया है, ड्राइंग को एक अलग पैनल पर रखा है, और यह सब ठीक काम कर रहा है। सहायता के लिए धन्यवाद।

1
  1. पेंट ओवरराइड न करें, पेंट ओवरराइड करें कॉम्पोनेंट या अपनी आवश्यकताओं के अनुसार अपडेट करें।
  2. ऐसा लगता है कि आपको पेंट, पेंट और अपडेट विधियों के बीच भ्रम है। इसे पढ़ें: https://www.guiguan.net/repaint-paint-and-update/ यदि आप कोई गेम कर रहे हैं, तो repaint() पूरे घटक की पेंटेंट का कारण बन जाएगा, इसलिए आपके पास कुछ प्रदर्शन समस्याएं होंगी।
संबंधित मुद्दे