2016-04-10 19 views
0

'dan yeni Ben java oyunlarında yeniyim. paintComponent'u, aşağıdaki kodu kullanarak JPanel'i Snake sınıfından genişleten render sınıfında aramaya çalışıyorum. Ancak nerede yanlış gidiyorum bilmiyorum. paintComponent yönteminin oluşturucu değil çağrısını yapabilir.probel ile arama yöntemi paintComponet (Grafik g) sınıfında sınıf Snake

public class Snake implements ActionListener 
{ 
    public Timer t=new Timer(20,this); 
    public Render render; 
    public JFrame frame; 
    public Toolkit toolkit; 
    public static Snake s; 
    public Snake() 
    { 
    toolkit=Toolkit.getDefaultToolkit(); 
    frame=new JFrame(); 
    //MenuBar menubar=new MenuBar(); 
    render=new Render(); 
    frame.setTitle("Nikitha's Snake"); 
    frame.setVisible(true); 
    frame.setSize(800,700); 
    frame.setLocation(toolkit.getScreenSize().width/2,   toolkit.getScreenSize().height/2); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.add(render); 

//------------------------------------------------------------------------------ 
     JMenuBar menubar=new JMenuBar(); 
     JMenu file=new JMenu("File"); 
     menubar.add(file); 
     JMenuItem newgame=new JMenuItem("new game"); 
     file.add(newgame); 
     JMenu edit=new JMenu("Edit"); 
     menubar.add(edit); 
     JMenuItem exit=new JMenuItem("Exit"); 
     edit.add(exit); 
     frame.setJMenuBar(menubar); 


     exit.addActionListener(new ActionListener() 
     { 
      //@Override 
      public void actionPerformed(ActionEvent e){ 
      System.exit(0);} 
     }); 
//------------------------------------------------------------------------------ 
    t.start(); 
    } 


    public static void main(String[] args) 
    { 

     s = new Snake(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) 
    { 
     //System.out.println("a"); 
     render.repaint(); 
    } 
} 




package snake; 

import java.awt.Color; 
import java.awt.Graphics; 
import javax.swing.JPanel; 

@SuppressWarnings("Serial") 
public class Render extends JPanel{ 

public static int curcolor=0;  
    public void PaintComponent(Graphics g) 
     {  
     super.paintComponent(g); 
     System.out.println("i am inside render class"); 
     g.setColor(Color.RED); 
     g.fillRect(0, 0, 800, 700); 
     } 
} 

cevap

1

PaintComponent! =

paintComponent hatırla Java harfe duyarlıdır.

Yöntemleri geçersiz kılarken önemle önerilir, aksi halde bir derleyici hatası oluşturacağından, @Override ek açıklamalarını kullanırsınız.

public class Render extends JPanel{ 

    @Override 
    public void paintComponent(Graphics g) { 
+0

Çok teşekkür ederim. Bunu çözmek için tam olarak bir gün harcadım: D –

İlgili konular