2015-10-05 104 views
-1

我正在制作一个绘制图像的程序,看起来我犯了一个错误,我的程序只是不想绘制出图像。有人能指出我的错误,因为我真的没有看到它。Java图形PaintComponent问题。似乎无法找到该错误

package basic_game_programing; 

import java.awt.Graphics; 
import java.awt.Image; 


import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class Practise extends JPanel { 

public Image image; 

     //#####PAINT__FUNCTION##### 
     public void PaintComponent(Graphics g){ 
      super.paintComponent(g); 

       ImageIcon character = new ImageIcon("C:/Documents and Settings/Josip/Desktop/game Šlije/CompletedBlueGuy.PNG"); 
       image = character.getImage(); 

       g.drawImage(image,20,20,null); 
       g.fillRect(20, 20, 100, 100); 
     } 



//######MAIN__FUCTION####### 
public static void main(String[]args){ 

    Practise panel = new Practise(); 


    //SETTING UP THE FRAME 
    JFrame frame = new JFrame(); 
    // 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500,500); 
    frame.add(panel); 


    //SETTING UP THE PANEL 

    // 









} 

}

+2

1的源代码中的白色空间中的单个空行的全部就是* *永远需要。 '{'之后或'}'之前的空行通常也是多余的。 2.请参阅[检测/修复代码块的悬挂紧密支架](http://meta.stackexchange.com/q/251795/155831),以解决我无法解决的问题。 –

回答

2

你使用的paintComponent代替miscapitalizing的paintComponent(注意第一个 “P”)。

  • 因此将PaintComponent更改为paintComponent
  • 使用方法上方的@Override注释让编译器告诉您何时犯这类错误。
  • 切勿将图像读入绘画方法,因为这会减慢需要快速的方法,并且在一次读取就足够时,可以反复读取图像。
  • 该方法应该是protected而不是public
  • 使用ImageIO.read(...)来读取图像,并使用jar文件中的资源和相对路径,而不是使用文件或ImageIcons。
  • 不要在JFrame上调用setVisible(true),直到之后添加所有组件,否则有些可能不会显示。
  • 请阅读教程,因为大部分内容在这里都有很好的解释。

例如,

public class Practise extends JPanel { 

    private Image image; 

    public Practice() { 
     // read in your image here 
     image = ImageIO.read(.......); // fill in the ... 
    } 

    @Override // use override to have the compiler warn you of mistakes 
    protected void paintComponent(Graphics g){ 
     super.paintComponent(g); 

     // never read within a painting method 
     // ImageIcon character = new ImageIcon("C:/Documents and Settings/Josip/Desktop/game Šlije/CompletedBlueGuy.PNG"); 
     // image = character.getImage(); 

     g.drawImage(image, 20, 20, this); 
     g.fillRect(20, 20, 100, 100); 
    } 
} 
相关问题